1e01aa904Sopenharmony_cistruct base
2e01aa904Sopenharmony_ci{
3e01aa904Sopenharmony_ci  enum mode : short { in, out, top, bottom };
4e01aa904Sopenharmony_ci  enum state { pass, fail, unknown };
5e01aa904Sopenharmony_ci  typedef long int_type;
6e01aa904Sopenharmony_ci};
7e01aa904Sopenharmony_ci
8e01aa904Sopenharmony_cistruct A : public base
9e01aa904Sopenharmony_ci{
10e01aa904Sopenharmony_ci  int_type	_M_i;
11e01aa904Sopenharmony_ci  int_type	_M_n;
12e01aa904Sopenharmony_ci  mode		_M_type;
13e01aa904Sopenharmony_ci};
14e01aa904Sopenharmony_ci
15e01aa904Sopenharmony_cistruct C1 : public base
16e01aa904Sopenharmony_ci{
17e01aa904Sopenharmony_ci  mode		_M_type;
18e01aa904Sopenharmony_ci};
19e01aa904Sopenharmony_ci
20e01aa904Sopenharmony_cistruct C2 : virtual public base
21e01aa904Sopenharmony_ci{
22e01aa904Sopenharmony_ci  mode		_M_type;
23e01aa904Sopenharmony_ci};
24e01aa904Sopenharmony_ci
25e01aa904Sopenharmony_cistruct C3 : public base
26e01aa904Sopenharmony_ci{
27e01aa904Sopenharmony_ci  mode		_M_type;
28e01aa904Sopenharmony_ci
29e01aa904Sopenharmony_ci  virtual ~C3() { };
30e01aa904Sopenharmony_ci};
31e01aa904Sopenharmony_ci
32e01aa904Sopenharmony_cistruct C4 : public base
33e01aa904Sopenharmony_ci{
34e01aa904Sopenharmony_ci  mode		_M_type;
35e01aa904Sopenharmony_ci
36e01aa904Sopenharmony_ci  virtual void foo() = 0;
37e01aa904Sopenharmony_ci};
38e01aa904Sopenharmony_ci
39e01aa904Sopenharmony_cistruct D1 : public A
40e01aa904Sopenharmony_ci{
41e01aa904Sopenharmony_ci  int_type	_M_index;
42e01aa904Sopenharmony_ci  int_type*	_M_array;
43e01aa904Sopenharmony_ci  bool		_M_ok;
44e01aa904Sopenharmony_ci};
45e01aa904Sopenharmony_ci
46e01aa904Sopenharmony_cistruct D2 : public C1
47e01aa904Sopenharmony_ci{
48e01aa904Sopenharmony_ci  state		_M_state;
49e01aa904Sopenharmony_ci  int_type	_M_index;
50e01aa904Sopenharmony_ci  int_type*	_M_array;
51e01aa904Sopenharmony_ci  bool		_M_ok;
52e01aa904Sopenharmony_ci};
53e01aa904Sopenharmony_ci
54e01aa904Sopenharmony_cistruct D3 : public C1
55e01aa904Sopenharmony_ci{
56e01aa904Sopenharmony_ci  int_type	_M_index;
57e01aa904Sopenharmony_ci  int_type*	_M_array;
58e01aa904Sopenharmony_ci};
59e01aa904Sopenharmony_ci
60e01aa904Sopenharmony_cistruct D2v : virtual public C2
61e01aa904Sopenharmony_ci{
62e01aa904Sopenharmony_ci  state		_M_state;
63e01aa904Sopenharmony_ci  int_type	_M_index;
64e01aa904Sopenharmony_ci  int_type*	_M_array;
65e01aa904Sopenharmony_ci  bool		_M_ok;
66e01aa904Sopenharmony_ci};
67e01aa904Sopenharmony_ci
68e01aa904Sopenharmony_cistruct D3v : virtual public C3
69e01aa904Sopenharmony_ci{
70e01aa904Sopenharmony_ci  int_type	_M_index;
71e01aa904Sopenharmony_ci  int_type*	_M_array;
72e01aa904Sopenharmony_ci};
73e01aa904Sopenharmony_ci
74e01aa904Sopenharmony_cistruct D4v : public C4
75e01aa904Sopenharmony_ci{
76e01aa904Sopenharmony_ci  int_type	_M_index;
77e01aa904Sopenharmony_ci  int_type*	_M_array;
78e01aa904Sopenharmony_ci
79e01aa904Sopenharmony_ci  void foo() { }
80e01aa904Sopenharmony_ci};
81e01aa904Sopenharmony_ci
82e01aa904Sopenharmony_ciint main()
83e01aa904Sopenharmony_ci{
84e01aa904Sopenharmony_ci  D1 obj1;
85e01aa904Sopenharmony_ci  D2 obj2;
86e01aa904Sopenharmony_ci  D3 obj3;
87e01aa904Sopenharmony_ci  D2v obj2v;
88e01aa904Sopenharmony_ci  D3v obj3v;
89e01aa904Sopenharmony_ci  D4v obj4v;
90e01aa904Sopenharmony_ci  return 0;
91e01aa904Sopenharmony_ci}
92