https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67104
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-08-03 CC| |trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 tmp % cat te3.ii namespace std { typedef int size_t; template <typename _Tp, int _Nm> struct A { typedef int _Type[_Nm]; static constexpr _Tp _S_ref (const _Type __t, size_t) { return __t[0]; } }; template <typename, int _Nm> struct array { typedef int const_reference; typedef int size_type; typedef A<int, _Nm> _AT_Type; typename _AT_Type::_Type _M_elems; constexpr const_reference operator[](size_type) const { return _AT_Type::_S_ref (_M_elems, 0); } }; } constexpr auto make_array (int val) { std::array<int, 2> result{ val, 0 }; return result; } constexpr auto numbers_static = make_array (1); int main () { static_assert (numbers_static[0], ""); } markus@x4 tmp % clang++ -std=c++14 te3.ii markus@x4 tmp % g++ -std=c++14 te3.ii te3.ii: In function ‘int main()’: te3.ii:36:3: error: static assertion failed: static_assert (numbers_static[0], ""); ^