https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110197
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- // PR c++/110197 namespace std { constexpr bool __is_constant_evaluated() { return __builtin_is_constant_evaluated(); } template <bool, typename _Tp> using enable_if_t = _Tp; template <typename _Tp, int _Nm> struct __array_traits { typedef _Tp _Type[_Nm]; }; template <typename _Tp, int _Nm> struct array { typename __array_traits<_Tp, _Nm>::_Type _M_elems; }; template <typename _Tp> array(_Tp) -> array<enable_if_t<0, _Tp>, 1>; struct char_traits { static constexpr unsigned length() { __is_constant_evaluated(); return 0; } }; struct basic_string_view { using traits_type = char_traits; constexpr basic_string_view(const char *) : _M_len{traits_type::length()}, _M_str{} {} long _M_len; char _M_str; }; } // namespace std struct Currency { constexpr Currency(std::basic_string_view) {} }; void get_c() { constexpr std::array c{Currency{""}}; }