summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp0x/dc8.C
blob: e483f3e4eeb124b3c5fedffab193e7611b9aef0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// 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);