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)9void 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)18void 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)30void 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()41int main() 42 { 43 Nothing nothing; 44 func1(nothing); 45 } 46