2017-02-01 6 views
0

Gibt es eine Ready-Funktion, die einen Template-Parameter als Argument annehmen kann und feststellt, dass es sich um benutzerdefinierte Typen (Klasse oder Struktur) oder eingebaute Datentypen (Int, Float, Char ...)Bewertung des Template-Parameters

+0

Auschecken [''] (http://en.cppreference.com/w/cpp/header/type_traits) – NathanOliver

Antwort

0

Sie suchen nach der Vorlage std::is_arithmetic, die bestimmt, ob der Vorlagenparameter eine Ganzzahl oder ein Fließkommatyp ist.

Nach dem Eliminierungsprozess sind die einzigen verbleibenden Optionen: Zeiger oder eine Referenz, eine Klasse und void. Vielleicht auch eine Art Aufzählung. Aus Ihrer Frage ist nicht klar, wie Sie diese klassifizieren möchten, aber falls notwendig, sollten zusätzliche Prüfungen zusätzlich zu std::is_arithmetic hinzugefügt werden, um den gegebenen Typ weiter zu disambiguieren.

+0

Hinweis: 'std :: is_fundamental' umfasst zusätzlich' void' und 'std :: nullptr_t' zu arithmetischen Typen. Darüber hinaus gibt es Arrays, Pointer & Member Pointer und Referenzen. Es könnte einfacher sein, von 'is_class' und' is_union' zu starten und zu prüfen, ob diese fehlschlagen, plus cv-Qualifier und Pointer und/oder Referenzen zu entfernen, je nachdem, was genau das OP will. – chris