https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117966
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|libstdc++ |c++
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Reduced:
typedef long unsigned int size_t;
template<typename _Tp, size_t _Nm>
struct array
{
_Tp _M_elems[_Nm];
};
template<typename _Type, size_t _Extent = -1ul>
struct span
{
template<typename _Tp, size_t _ArrayExtent>
constexpr
span(const array<_Tp, _ArrayExtent>& __arr)
{
if (!__arr._M_elems) throw;
}
};
struct A {
constexpr A(span<const unsigned char>) {}
};
constexpr A val{array<unsigned char, 2>{0x11, 0x22}};
EDG and Clang both compile this, GCC doesn't.