簡體   English   中英

C ++模板專業化-僅專門化某些方法,其余使用默認的impl

[英]C++ template specialization - specialize only some methods, using default impl for the rest

我有一個類似的模板:

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) { ... }
}

如何僅對模板類中的一種方法進行專門化處理?

解決這個問題很簡單...

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

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

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

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

我花了一些時間才弄清楚這個問題,所以我認為應該將其發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM