http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51083
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-11-10 19:03:37 UTC --- slightly further reduced #include <complex> namespace a { template<typename> class Mat { }; template<typename T> struct Mat2 { Mat2(Mat<T>) { } }; template<typename T> int imag(Mat2<T>) { return 1; } } int main() { a::Mat< std::complex<double> > c; return imag(c); }