Reputation: 5821
I'm trying to specialize a function within a specialization of a class template, but can't figure the right syntax:
template< typename T >
struct Foo {};
template<>
struct Foo< int >
{
template< typename T >
void fn();
};
template<> template<>
void Foo< int >::fn< char >() {} // error: too many template-parameter-lists
Here I'm trying to specialize fn
for char
, which is inside of Foo
specialized for int
. But the compiler doesn't like what I write. What should be the right syntax then?
Upvotes: 5
Views: 89
Reputation: 392833
You don't have to say that you're specializing twice.
You're only specializing one function template here
template<> void Foo<int>::fn<char>() {}
template< typename T >
struct Foo {};
template<>
struct Foo< int >
{
template< typename T >
void fn();
};
template<> void Foo<int>::fn<char>() {}
int main() {
Foo<int> f;
f.fn<char>();
}
Upvotes: 6