https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94422

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[9 Regression] static_cast  |[9/10 Regression]
                   |from std::array operator[]  |static_cast from std::array
                   |to enum class               |operator[] to enum class
      Known to fail|                            |10.0

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Reduced:

// { dg-options "-std=gnu++17" }
template<typename T, unsigned N>
struct array
{
  T data[N];

  constexpr T& operator[](unsigned n) { return data[n]; }
};

enum class EnumC : signed char { Forward = 1, Backward = -1 };

array<unsigned char, sizeof(EnumC)> buf;

template <typename T>
struct S {
  void foo() { auto const cast_to_enum{static_cast<EnumC>(buf[0])}; }
};

S<int> s;

Reply via email to