Boost logo

Boost Users :

Subject: Re: [Boost-users] Template method applied to template object
From: Othman, Ossama (ossama.othman_at_[hidden])
Date: 2009-03-03 13:09:21


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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net