/* PR c++/3012 */ /* { dg-do compile } */ class A { public: template <class T> void foo() const { } }; template <class T> class B { public: void bar(const A& a) const { // Compile used to fail with parse error before `;' token a.foo<double>(); } }; int main() { A a; B<int> b; b.bar(a); }