Geben Sie einen generischen Aufzählungstyp als Vorlageargument an

8

Kurz gesagt:

Gibt es eine Möglichkeit, eine General Template-Klasse mit etwas zu füttern, das nur einen enum -Typ repräsentiert? Etwas wie:

%Vor%

<int> ist zu viel / funktioniert in meinem Fall nicht.

Mein spezieller Fall:

  • Eine Template-Klasse Holder behandelt alle Arten von Daten auf generische Weise.
  • Eine abstrakte General -Klasse implementiert spezielle Algorithmen, die auf dem Verhalten von Holder s basieren.
  • Template-Spezifikationen von General (wie IntSpecific , DoubleSpecific , StringSpecific , MoreSophisticatedTypeSpecific ..) definieren, wie mit einigen konkreten Holder -Typen umgegangen wird.
  • Wie kann ich eine EnumSpecific Spezifikation richtig definieren?

Hier ist ein gekürzter Code, der mein Problem verursacht:

%Vor%

Was soll ich dem Template-Argument in EnumSpecific : General<??> geben, um die Dinge für den Compiler klarzustellen?

Muss ich irgendeine Art von enum_type -Konzept und komplexere Tools aus der generischen Programmierung verwenden?

    
iago-lito 31.08.2015, 17:40
quelle

1 Antwort

7

Wir können dies mit std::enable_if und std::is_enum . Als Beispiel ist dies eine Klasse, die einen Aufzählungstyp als Vorlageparameter verwendet.

%Vor%     
NathanOliver 31.08.2015, 17:58
quelle