https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67104

--- Comment #6 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Another example
http://stackoverflow.com/questions/31878796/removing-constexpr-changes-values-of-array-on-gcc

markus@x4 tmp % cat test.ii
template <typename T, int N> struct array
{
  constexpr T &operator[](int index) { return data[index]; }
  constexpr T operator[](int index) const { return data[index]; }
  T data[N];
};

constexpr array<long unsigned, 1001>
make_bottle_count ()
{
  array<long unsigned, 1001> a{};
  a[65] = 1;
  return a;
}

constexpr auto bottle_count = make_bottle_count ();
static_assert (bottle_count[65], "");

markus@x4 tmp % clang++ -c -std=c++14 test.ii
markus@x4 tmp % g++ -c -std=c++14 test.ii
test.ii:17:1: error: static assertion failed: 
 static_assert (bottle_count[65], "");
 ^

Reply via email to