Metaprogrammierung mit std :: is_same

8

Ist es möglich, etwas wie das folgende zu tun, das ohne Vorlagenspezialisierung kompiliert wird?

%Vor%     
ZeroCool 16.12.2014, 12:04
quelle

2 Antworten

16

Ja. Erstellen Sie die Funktionsvorlagen, und aktivieren Sie sie dann unter Verwendung von std::enable_if :

%Vor%

Die Lösung von die andere Antwort ist möglicherweise nicht durchführbar, wenn die Klasse groß ist und viele Funktionen benötigt unabhängig von T . Sie können dies jedoch lösen, indem Sie von einer anderen Klasse erben, die nur für diese speziellen Methoden verwendet wird. Dann können Sie nur diese Basisklasse spezialisieren.

In C ++ 14 gibt es bequeme Typ-Aliase, so dass die Syntax folgendermaßen aussehen kann:

%Vor%

Und C ++ 17, noch kürzer:

%Vor%     
jrok 16.12.2014, 12:12
quelle
4

Ja, mit Template-Spezialisierung:

%Vor%     
BЈовић 16.12.2014 12:07
quelle