2022年6月17日

[C++] Partial Template Specialization of class Member Function

事情是這樣的,有人問我他想做到這件事:

enum class Enum {A, B, C ... };
template <Enum E, int N>
struct MyStruct {
    void func();
};

template <int N>
void MyStruct<Enum::A, N>::func() {...}

看完後我就說了,你想做的事 function 的偏特化,這在 C++ 是不被允許的,所以當然會編譯失敗囉
當然,下一個問題就是:那要怎麼做?

以下提供幾個方法 (先不考慮整個 class 重構把 template argument 拆掉)