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 ?
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.
Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden habe, aber Sie können die Vorlage für bestimmte Enums instanziieren:
%Vor%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):
Tags und Links c++ enums templates template-specialization