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