------- Comment #4 from pinskia at gcc dot gnu dot org 2008-10-27 02:00 ------- 3.3 did not ICE but did give the wrong error message: t.cc: In instantiation of `func2(T&) [with T = double]::ttt1': t.cc:10: instantiated from `void func2(T&) [with T = double]' t.cc:15: instantiated from here t.cc:8: error: `t' was not declared in this scope t.cc: In function `void func2(T&) [with T = double]': t.cc:15: instantiated from here t.cc:10: error: no matching function for call to `func2(T&) [with T = double]::ttt1::ttt1(double&)' t.cc:9: error: candidates are: func2(T&) [with T = double]::ttt1::ttt1(const func2(T&) [with T = double]::ttt1&)
There is no use of t really at line 8 of my reduced testcase, only the use of the typedef. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37920