テンプレートメタプログラミングへの道をゆっくりと感じており、以下を実装する方法がわかりません。
// hpp file
enum MyEnum { Alive = 0, Dead };
class A {
public:
template<typename T, typename O, MyEnum ls>
static int Register();
};
// elsewhere in the code...
A::Register<IType1, Type1, Dead>();
コンパイル時に、3番目のテンプレートタイプ(コンパイル時不変)がDeadまたはAliveのいずれかの列挙値であることがわかります。次のように、Register関数に2つの本体を定義することは可能ですか?
// desired hpp file
template<typename T, typename O, Alive>
int Register();
template<typename T, typename O, Dead>
int Register();
// corresponding desired .inc file
template<typename T, typename O, Alive>
int Register() { // Alive specific implementation ... }
template<typename T, typename O, Dead>
int Register() { // Dead specific implementation ... }
私は見てきました: 定数値を持つC++テンプレートの特殊化
しかし、私はそれをこの状況に適用する方法を理解することができませんでした。