2015-11-27 44 views
5

我试图专注一类模板的一个特例中的一个函数,但找不出正确的语法功能模板的显式特m试图为char专门设置fnFoo专用于int。但编译器不喜欢我写的东西。那么正确的语法应该是什么?一个完全专业类模板

回答

6

你不一定要说你专精两次。

你只在这里专门

template<> void Foo<int>::fn<char>() {} 

Live On Coliru

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>(); 
} 
+1

令人惊讶的是一个函数模板时,编译器的错误信息是点上。 –