1 // { dg-do assemble  }
2 
3 #include <new>
4 
5 inline void *
new(std::size_t alloc_sz,const char * fname,unsigned lineno)6 operator new(std::size_t alloc_sz, const char *fname, unsigned lineno)
7 {
8   return ::operator new (alloc_sz);
9 }
10 inline void *
11 operator new[](std::size_t alloc_sz, const char *fname, unsigned lineno)
12 {
13   return ::operator new[] (alloc_sz);
14 }
15 inline void
delete(void * ptr,const char * fname,unsigned lineno)16 operator delete(void *ptr, const char *fname, unsigned lineno)
17 {
18 }
19 inline void
20 operator delete[](void *ptr, const char *fname, unsigned lineno)
21 {
22 }
23 
24 class DEF {
25 public:
26     DEF( DEF *parent=0, const char *name=0 );
27 };
28 
29 class ABC
30 {
31 public:
32     enum stuff { ID0, ID1 };
33     ABC( stuff, DEF *parent=0, const char *name=0 );
34 };
35 
36 class GHI : public DEF
37 {
38 };
39 
40 class LMNFrame;
41 class LMN : public DEF
42 {
43   friend class LMNFrame;
44   public:
45 public:
46   LMN();
47 private:
48   LMNFrame *draw_area;
49 
50   ABC *scroll_h;
51 };
52 class LMNFrame : public GHI {
53 };
LMN()54 LMN::LMN()
55 {
56   draw_area = new ("abc", 69) LMNFrame;
57 
58   scroll_h = new ("def", 71)  ABC(ABC::ID0, this);
59 }
60 
61