Sintaxis de C++ para explícita de que la especialización de una plantilla de función en una clase de plantilla?

Tengo el código que funciona en VC9 (Microsoft Visual C++ 2008 SP1), pero no en GCC 4.2 (en Mac):

struct tag {};

template< typename T >
struct C
{   
    template< typename Tag >
    void f( T );                 //declaration only

    template<>
    inline void f< tag >( T ) {} //ERROR: explicit specialization in
};                               //non-namespace scope 'structC<T>'

Entiendo que GCC que me gusta mover mi explícito de especialización fuera de la clase, pero no puedo entender la sintaxis. Alguna idea?

//the following is not correct syntax, what is?
template< typename T >
template<>
inline void C< T >::f< tag >( T ) {}
InformationsquelleAutor jwfearn | 2010-01-19

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein