summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.jason/synth10.C
blob: f6181dc7c72c12e6c7b17da660ec3db13438c6f7 (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
// { dg-do assemble  }
// { dg-options "-O" }
// Bug: Synthesizing methods for the nested class screwed up current_class_decl
// for the outer class.

class A;
class AH
{
  public:
    AH (   A * p = 0 );
    AH ( const  AH & from )
    : pointer( from.pointer )   { inc(); }
    ~ AH ()  { dec(); }
  private:
    A * pointer;
    void inc() const;
    void dec() const;
};

class A 
{
  protected:
    struct AttrTable
    {
	struct Row
	{
	};
    };
    
  public:

    class Attributes
    {
      public:
	class iterator
	{
	  public:
	    iterator() : mo(0), attr(0) {}
	    iterator& operator++() { ++attr; return *this; }
	    iterator operator++(int)
	    { iterator tmp = *this; ++*this; return tmp; }

	  private:
	    AH mo;
	    const AttrTable::Row* attr;
	};

	Attributes(AH mo)
	: mo(mo) {}
	AH mo;
    };
};