1 // PR c++/57416
2 // { dg-do compile { target c++11 } }
3 
4 struct Nothing
5 {
6 };
7 
8 template <class PARENTDATA>
func3(PARENTDATA & p_parent_data)9 void func3 (PARENTDATA & p_parent_data)
10 {
11   struct Data
12   {
13     PARENTDATA & parent_data = p_parent_data;  // { dg-error "parameter" }
14   } data;
15 }
16 
17 template <class PARENTDATA>
func2(PARENTDATA & p_parent_data)18 void func2 (PARENTDATA & p_parent_data)
19 {
20   struct Data
21   {
22     PARENTDATA & parent_data = p_parent_data;  // { dg-error "parameter" }
23   } data;
24 
25   data.parent_data.x = 5;
26   func3(data);
27 }
28 
29 template <class PARENTDATA>
func1(PARENTDATA & p_parent_data)30 void func1 (PARENTDATA & p_parent_data)
31 {
32   struct Data
33   {
34     PARENTDATA & parent_data = p_parent_data;  // { dg-error "parameter" }
35     int x = 1;
36   } data;
37 
38   func2(data);
39 }
40 
main()41 int main()
42 {
43   Nothing nothing;
44   func1(nothing);
45 }
46