view gcc/testsuite/g++.dg/cpp0x/dc8.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

// 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);