view gcc/testsuite/g++.dg/template/pr68948.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/68948

struct B { B (); B (int); };

struct Time : B { };

/* Here, A and B are unrelated types.  */

template <typename>
struct A
{
  void TestBody ()
  {
    B::B (); // { dg-error "cannot call constructor .B::B." }
    B::B::B (); // { dg-error "cannot call constructor .B::B." }
    B::B (0); // { dg-error "cannot call constructor .B::B." }
  }
};

/* Here, C is (indirectly) derived from B.  */

template <typename g>
struct C : Time
{
  void TestBody ()
  {
    B::B (); // { dg-error "cannot call constructor .B::B." }
    B::B::B (); // { dg-error "cannot call constructor .B::B." }
    B::B (0); // { dg-error "cannot call constructor .B::B." }
    Time::B (0);
  }
};

int
main (void)
{
  A<int> a;
  C<int> c;
  a.TestBody ();
  c.TestBody ();
}