Gegeben eine Klassendeklaration
%Vor% Ich möchte A::foo
für verschiedene Typen ( int
, ...) und Klassen (POD, non-POD) von T
spezialisieren. Leider kann ich std::enable_if
nicht für letzteres verwenden. Folgendes kompiliert nicht:
Das Problem liegt wahrscheinlich daran, dass das std::enable_if<...>
-Stück Teil der Funktionssignatur ist und dass ich kein solches Mitglied in A
deklariert habe. Wie kann ich ein Template-Mitglied basierend auf Typeigenschaften spezialisieren?
Ich sehe keinen Grund, mich hier zu spezialisieren, die Überlastung der Funktion scheint in meinem Kopf zu genügen.
%Vor% Wenn Sie nach POD oder keinem POD suchen, haben Sie nur diese zwei Möglichkeiten, so dass eine generische Funktion nicht benötigt wird (und nicht erlaubt ist, weil sie mehrdeutig wäre). Du brauchst mehr als das? Mit Hilfe von std::enable_if<std::is_same<int, T>::value, T>::type
können Sie nach expliziten Typen ohne Spezialisierung suchen.
Tags und Links c++ c++11 templates template-specialization