Alex Rivera | Logout

C++ syntax for explicit specialization of a template function in a template class?

Asked 2010-01-19T22:49:37.153
62

I have code which works in VC9 (Microsoft Visual C++ 2008 SP1) but not in GCC 4.2 (on 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>'

I understand that GCC would like me to move my explicit specialization outside the class but I can't figure out the syntax. Any ideas?

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

1 Answer

-2

Try this:

template <> template<typename T> inline void C<T> :: foo<tag2>(T) {}
answered 2010-01-19T22:52:52.263

Your Answer