summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.other/defarg7.C
blob: 244b55ed50f9af222867377424f9f700260bcd42 (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
// { dg-do assemble  }

// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 7 Jan 2001 <nathan@codesourcery.com>

// As of G++ 3.4, we no longer attempt to detect dependencies; the
// standard does not require that we do.

// Bug 1038. Default args on class members can produce circular dependencies.
// Make sure we spot them, and don't depend on a particular ordering.

struct A
{
  static int Foo (int = Baz ()); // { dg-error "" } 
  static int Baz (int = Foo ());
};

struct Test
{
  Test (void * = 0);
  void set (const Test &arg = Test ());
};

struct B
{
  static int Bar (int = Foo (1));
  static int Foo (int = Baz ()); // { dg-error "" } 
  static int Baz (int = Foo (1));
};

int main ()
{
  Test t;
  t.set ();
  t.set (t);
  B::Bar ();
  B::Bar (1);
  B::Baz ();
  B::Baz (1);
  B::Foo ();
  B::Foo (1);
  
  return 0;
}