模板专业化需求

时间:2011-08-19 11:09:59

标签: c++

这很容易,我很难弄清楚它是如何实际使用的,

template<class C>
struct P{
};

template<> 
struct P<int>{};

这种特定专业化是否有真正的应用?

1 个答案:

答案 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