Синтаксис C ++ для явной специализации шаблонной функции в шаблонном классе?

У меня есть код, который работает в VC9 (Microsoft Visual C ++ 2008 SP1), но не в GCC 4.2 (на 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'

Я понимаю, что GCC хотел бы, чтобы я перенес свою явную специализацию за пределы класса, но я могуне понять синтаксис. Есть идеи?

// the following is not correct syntax, what is?
template< typename T >
template
inline void C< T >::f< tag >( T ) {}

Ответы на вопрос(4)

Ваш ответ на вопрос