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{""}}; }

Reply via email to