Vorlagenspezialisierung für enum

7

Ist es möglich, eine Template-Methode für Enums zu spezialisieren?

Etwas wie (der ungültige Code unten):

%Vor%

Falls es nicht möglich ist, dann, wenn ich Spezialisierungen für eine Reihe von Typen habe, wie int , unsigned int , long long , unsigned long long usw., dann wird welche der Spezialisierungen einen Aufzählungswert verwenden ?

    
nilton 25.10.2009, 04:23
quelle

3 Antworten

19

Sie können std::enable_if mit std::is_enum von <type_traits> , um dies zu erreichen.

In einer Antwort Zu einer meiner Fragen hat litb eine ausführliche und gut geschriebene Erklärung gegeben, wie dies mit den Boost-Äquivalenten gemacht werden kann.

    
James McNellis 25.10.2009, 04:31
quelle
6

Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden habe, aber Sie können die Vorlage für bestimmte Enums instanziieren:

%Vor%     
Thomas Padron-McCarthy 25.10.2009 04:33
quelle
1

Vermutlich ist die einzige interessante Sache, die Sie mit einem Typ machen können, dass sie nur wissen, dass es ein Enum ist, es in den zugrundeliegenden Typ umgewandelt hat und daran arbeitet. So könnte das aussehen, wenn man den von James vorgeschlagenen Ansatz ( SFINAE ) verwendet:

%Vor%

Als ähnlichen Bonus gibt es hier eine ähnliche Methode, die nur für einen bestimmten Typ Ihrer Wahl gelöst wird (ersetzen Sie bool in is_same durch den Typ Ihrer Wahl):

%Vor%     
Ohad Schneider 01.12.2016 10:36
quelle