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.