[roll] Roll fuchsia [fidl][cpp] Don't use ToUnderlying when converting enums

When the new C++ bindings is used in Chromium we found that
HLCPP/natural enum conversion breaks when an enum-less library is
included in front of the library of interest. The reason is that we have
multiple overloads of `fidl::ToUnderlying`. There is one overload for
HLCPP strict enums, and separate overloads defined for natural strict &
flexble enums. Due to [1], a templated class that uses ToUnderlying can
only use ToUnderlying overloads that were already included before it.
Thus sometimes the natural strict & flexible overloads aren't visible to
the compiler.

In user code, people can call `fidl::ToUnderlying` and all the necessary
overloads are already included. However, inside FIDL library code such
as `lib/fidl/cpp/hlcpp_conversion.h`, not all `fidl::ToUnderlying` are
defined at the point when that header is included.

The most straightforward solution is to not use `fidl::ToUnderlying` in
FIDL runtime libraries.

[1]: https://en.cppreference.com/w/cpp/language/dependent_name

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/800049
Original-Revision: 4bbdd7f83187901fbf6bc2eb23b48d8749ef8dc9
GitOrigin-RevId: f3d44bbbe5560cea1c4e9b0f5eee63da6e20d337
Change-Id: I83cd227762b4a82bf04b814fce6fb83fae58aa9d
1 file changed
tree: dcd6ae55f51bc166320fd7bb8b03e9abacc1585a
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.