Thanks a lot for both answers !

On Tue, Mar 3, 2009 at 19:09, Othman, Ossama <ossama.othman@intel.com> wrote:
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 mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users