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], "");
   ^

Reply via email to