Hi,
The following lines don't compile with g++ (4.3.2) whereas it's ok with msvc 9.
struct Foo { template<class T> unsigned int foo() const { return sizeof(T); }
};
struct OtherFoo { template<class T> void f(const T& t) { t.foo<double>(); }
}; [snip] The ouput is : test.cpp: In member function 'void OtherFoo::f(const T&)': test.cpp:17: erreur: expected primary-expression before 'double' test.cpp:17: erreur: expected `;' before 'double'
Does anybody know a workaround ?
The following works for me: --- foo.cpp.old 2009-03-03 10:01:21.086297500 -0800 +++ foo.cpp 2009-03-03 10:00:26.471330500 -0800 @@ -14,7 +14,7 @@ template<class T> void f(const T& t) { - t.foo<double>(); + t.template foo<double>(); } }; HTH, -Ossama