специализация шаблонов c++ на основе значения времени компиляции

Я нащупываю путь к метапрограммированию шаблонов, медленно и не знаю, как реализовать следующее:

// hpp file
enum MyEnum { Alive = 0, Dead };
class A {
    public:
        template
        static int Register();
};

// elsewhere in the code...
A::Register();

Во время компиляции я буду знать, какое значение перечисления третий тип шаблона (неизменный во время компиляции), Dead или Alive. Можно ли определить два тела для функции регистрации, например:

// desired hpp file
template
int Register();

template
int Register();

// corresponding desired .inc file
template
int Register() { // Alive specific implementation ...  }

template
int Register() { // Dead specific implementation ...  }

Я взглянул на: Специализация шаблонов C++ с постоянным значением

, но я не смог понять, как применить ее к этой ситуации.

11
задан Community 23 May 2017 в 12:33
поделиться