я чувствую себя свой путь в шаблоне мета-программирование, медленно и я не уверен, как реализовать следующее:C++ шаблон специализация на основе компиляции значения времени
// 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>();
во время компиляции я знаю, что Значение enum означает, что третий тип шаблона (инвариант времени компиляции), либо Dead, либо Alive. Можно определить два тела для функции регистра, что-то вроде:
// 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++ Template Specialization with Constant Value
, но я не мог понять, как сделать его применить к эта ситуация.
Работает отлично! Спасибо, Pubby – Short