模板专业化需求

发布于 2024-11-30 10:18:50 字数 161 浏览 0 评论 0原文

这很简单,我一直想弄清楚它是如何实际使用的,

template<class C>
struct P{
};

template<> 
struct P<int>{};

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

This is very easy, I am stuck to figure out how that is used actually,

template<class C>
struct P{
};

template<> 
struct P<int>{};

Is there a real application for such specific specialization ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

老街孤人 2024-12-07 10:18:50

虽然您的具体示例似乎不太有趣,但模板专业化已被广泛使用。这是一个例子:

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

while your specific example doesn't seem too interesting, template specialization is widely used. Here's an example:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文