C ++ Klassenvorlagenparameter muss eine bestimmte Elternklasse haben [duplizieren]

8

Gegeben ist eine Klasse MyClass mit einem Template-Parameter

%Vor%

und eine weitere Klasse MySecondClass mit zwei Vorlagenparametern.

%Vor%

Was ich tun möchte ist, MyClass so zu beschränken, dass nur ein T erlaubt wird, das ein abgeleiteter Typ von MySecondClass ist. Ich weiß schon, dass ich etwas wie

brauche %Vor%

Ich bin mir nicht sicher, was ich für ? eingeben soll, da ich alle möglichen MySecondClass zulassen möchte.

    
user1056903 22.08.2016, 13:28
quelle

2 Antworten

7

Sie können einen Template-Vorlagenparameter für die Basisvorlage verwenden und dann prüfen, ob T* in Temp<Args...> konvertiert werden kann:

%Vor%

Live-Demo

    
TartanLlama 22.08.2016 13:37
quelle
3

Sie können ein benutzerdefiniertes Merkmal verwenden, um zu prüfen, ob ein Typ von einer Vorlage abgeleitet ist. Dann verwende dieses Merkmal innerhalb eines static_assert :

%Vor%

Live-Beispiel

    
m.s. 22.08.2016 13:39
quelle