1 // PR c++/77598 2 // { dg-do compile { target c++11 } } 3 4 template <typename T> 5 struct A { static constexpr T a = T (); }; 6 template <typename T> 7 constexpr T A<T>::a; 8 struct B 9 { 10 int b; fooB11 constexpr int foo () const { return b; } BB12 constexpr B (const int &x) : b(x) {}; 13 }; 14 struct C : public B 15 { CC16 constexpr C () : B(50) {}; 17 }; 18 struct D : public C 19 { 20 }; 21 struct E 22 { 23 static constexpr const auto &e = A<D>::a; 24 }; 25 constexpr const B &f = E::e; 26 constexpr const int g = f.foo (); 27