这很容易,我很难弄清楚它是如何实际使用的,
template<class C>
struct P{
};
template<>
struct P<int>{};
这种特定专业化是否有真正的应用?
答案 0 :(得分:5)
虽然您的具体示例似乎不太有趣,但模板专业化被广泛使用。这是一个例子:
template< class T >
struct StringConverter
{
static std::string Convert( const T& )
{
//do some conversion from T to string using stringstream for instance
//and return result
}
}
template<>
struct StringConverter< std::string >
{
static std::string Convert( const std::string& t )
{
//no need for conversion here!
return t;
}
}
//usage:
std::string a = StringConverter< int >::Convert( 5 ); //default impl
std::string b = StringConverter< std::string >::Convert( "b" ); //specialized