ich mich in Vorlage Meta-Programmierung das Gefühl, langsam und ich bin nicht sicher, wie die folgende implementieren:C++ Template-Spezialisierung basiert auf der Kompilierung Wert
// 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>();
Beim Kompilieren ich weiß, was Aufzählungswert Der dritte Vorlagentyp ist (kompilierungszeitunabhängig), entweder Dead oder Alive. Ist es möglich, zwei Stellen für die Register-Funktion, so etwas wie zu definieren:
// 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 ... }
ich einen Blick genommen zu haben: C++ Template Specialization with Constant Value
aber ich habe nicht in der Lage gewesen, um herauszufinden, wie man es machen gelten diese Situation.
funktioniert perfekt! Danke Pubby – Short