C ++模板专门化 - 仅专门使用某些方法,其余使用默认的impl

时间:2014-10-23 20:21:20

标签: c++ templates template-specialization partial-specialization

我有一个模板:

template <typename T>
class MyThing {
 public:
  static void Write(T value) { ... }
  static void Flush() { ... }
}

对于特定类型,例如bool,我想在不修改其他方法的情况下专门化Write方法。像这样......

// Specialize Write() behavior for <bool> ...
// This won't work. Mything<bool> no longer has a Flush() method!
template <>
class MyThing<bool> {
 public:
  static void Write(bool value) { ... }
}

如何专门化模板类中的一种方法?

1 个答案:

答案 0 :(得分:3)

对此的修复变得简单......

我需要做的就是在我的.cc文件中定义方法:

template <>
void MyThing<bool>::Write(bool value) { ... }

然后在我的.h文件中声明它:

template <>
void MyThing<bool>::Write(bool value);

我花了一段时间来弄清楚这一点,所以我想我会发布它。