1915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include <iostream>
2915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include <string>
3915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
4915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatastruct baz
5915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata    {
6915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata        int h;
7915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata        int k;
8915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata        baz(int a, int b) : h(a), k(b) {}
9915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata    };
10915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
11915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatastruct bar
12915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	{
13915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		int i;
14915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		int* i_ptr;
15915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata        baz b;
16915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata        baz& b_ref;
17915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		bar(int x) : i(x),i_ptr(new int(x+1)),b(i+3,i+5),b_ref(b) {}
18915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	};
19915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
20915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatastruct foo
21915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	{
22915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		int a;
23915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		int* a_ptr;
24915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		bar b;
25915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
26915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		foo(int x) : a(x),
27915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		a_ptr(new int(x+1)),
28915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata		b(2*x) {}
29915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
30915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	};
31915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
32915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataint main(int argc, char** argv)
33915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{
34915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	foo foo1(12);
35915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	foo foo2(121);
36915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
37915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	foo2.a = 7777; // Stop here
38915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	*(foo2.b.i_ptr) = 8888;
39915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata    foo2.b.b.h = 9999;
40915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
41915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	*(foo1.a_ptr) = 9999;
42915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	foo1.b.i = 9999;
43915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
44915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	int numbers[5] = {1,2,3,4,5};
45915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
46915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata	return 0;
47915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata
48915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata}