fortran/openmp.cc: Fix var init and locus use to avoid uninit values [PR fortran...
[official-gcc.git] / gcc / testsuite / g++.dg / cpp1y / constexpr-tracking-const19.C
blob2d18c94537b41bb849bb3e6bfa1022bcf18f9297
1 // PR c++/94074 - wrong modifying const object error for COMPONENT_REF.
2 // { dg-do compile { target c++14 } }
4 typedef decltype (sizeof (0)) size_t;
6 template <typename E, size_t N>
7 struct array
9   constexpr const E &operator[](size_t n) const noexcept { return elems[n]; }
10   const E elems[N]; // { dg-message "originally declared" }
13 template <typename T>
14 struct S {
15   using U = array<T, 4>;
16   U m;
17   constexpr S(int) : m{}
18   {
19     const_cast<int &>(const_cast<const U &>(m)[0]) = 42; // { dg-error "modifying a const object" }
20   }
23 constexpr S<int> p = { 10 };