blob: e483f3e4eeb124b3c5fedffab193e7611b9aef0d [file] [log] [blame]
// PR c++/51424
// { dg-do compile { target c++11 } }
template <class T >
struct S
{
S() : S() {} // { dg-error "delegates to itself" }
S(int x) : S(x) {} // { dg-error "delegates to itself" }
};
struct B1
{
B1() : B1() {} // { dg-error "delegates to itself" }
B1(int y) : B1(y) {} // { dg-error "delegates to itself" }
};
struct V1 : virtual B1
{
V1() : B1() {}
V1(int x) : B1(x) {}
};
struct B2
{
B2() : B2() {} // { dg-error "delegates to itself" }
B2(int y) : B2(y) {} // { dg-error "delegates to itself" }
};
struct V2 : virtual B2
{
V2() : V2() {} // { dg-error "delegates to itself" }
V2(int x) : V2(x) {} // { dg-error "delegates to itself" }
};
struct B3
{
B3() {}
B3(int y) {}
};
struct V3 : virtual B3
{
V3() : V3() {} // { dg-error "delegates to itself" }
V3(int x) : V3(x) {} // { dg-error "delegates to itself" }
};
struct CE1
{
constexpr CE1() : CE1() {} // { dg-error "delegates to itself" }
constexpr CE1(int x) : CE1(x) {} // { dg-error "delegates to itself" }
};
struct CEB2
{
constexpr CEB2() : CEB2() {} // { dg-error "delegates to itself" }
constexpr CEB2(int x) : CEB2(x) {} // { dg-error "delegates to itself" }
};
struct CE2 : CEB2
{
constexpr CE2() : CEB2() {}
constexpr CE2(int x) : CEB2(x) {}
};
S<int> s1;
S<int> s2(1);