【问题标题】:What is template<> inline bla bla [duplicate]什么是模板<> inline bla bla [重复]
【发布时间】:2017-03-09 19:55:15
【问题描述】:

我偶然发现了以下内容:

template<> inline bool Value::GetValue<bool>() const {
    return m_Value.ValueBoolean();   // union
}

无法理解空模板声明的作用?

【问题讨论】:

  • 这是一个template specialization
  • 好问题(如果您不知道术语很难搜索),但很可能是重复的。
  • "template inline bla bla" 添加另一个 bla,我想你几乎有一首 *NSYNC 歌曲。一直想知道为什么他们要取消引用一个常量。
  • 你用哪本 C++ 书来学习这门语言?

标签: c++ c++11


【解决方案1】:

这是bool 类型模板函数的显式特化。显式特化是使用template &lt;&gt; 语法的地方。

template <typename T> void foo(T t) // Main template
{ 
  ... 
} 

template <> void foo<bool>(bool b) // Explicit specialization for type `bool`
{ 
  ... 
} 

在您的示例中,它应用于 类成员函数 的模板这一事实完全无关紧要。函数声明为inline这一事实也完全无关紧要。

【讨论】:

  • 请注意,返回类型不必相同甚至相关。
【解决方案2】:

这是一个explicit specialization

【讨论】:

    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多