27 lines
469 B
C
27 lines
469 B
C
// PR c++/77598
|
|
// { dg-do compile { target c++11 } }
|
|
|
|
template <typename T>
|
|
struct A { static constexpr T a = T (); };
|
|
template <typename T>
|
|
constexpr T A<T>::a;
|
|
struct B
|
|
{
|
|
int b;
|
|
constexpr int foo () const { return b; }
|
|
constexpr B (const int &x) : b(x) {};
|
|
};
|
|
struct C : public B
|
|
{
|
|
constexpr C () : B(50) {};
|
|
};
|
|
struct D : public C
|
|
{
|
|
};
|
|
struct E
|
|
{
|
|
static constexpr const auto &e = A<D>::a;
|
|
};
|
|
constexpr const B &f = E::e;
|
|
constexpr const int g = f.foo ();
|