lassen Sie uns sagen, ich habe eine Aufzählung:Verwenden von C++ std :: enable_if mit einer normalen Funktion?
typedef enum {
Val1,
Val2,
Val3,
Val4
} vals;
und eine Funktion check(vals x)
, die einen boolean zurück, der angibt, ob die val in einer bestimmten Untergruppe von Werten in vals
ist.
bool check(vals x) {
switch(x) {
case Val1:
case Val3:
return true;
}
return false;
}
Ich mag diese Funktion als Bedingung für die Verwendung für die enable_if
(die Funktion, wie Sie sehen können, ist es nicht eine Funktion auf der Laufzeit abhängig), die Benutzer nur die Werte mit der Klassenvorlage verwenden zu lassen .
PS: Ich brauche die Vorlage, um Spezialisierungen für eine Methode der Klasse, abhängig von der Vorlage Wert.
Haben Sie versucht, 'check'' constexpr' zu erstellen? – KABoissonneault
@KABoissonneault Ich sollte C++ 11 Funktionen häufiger betrachten. Vielen Dank! – NoImaginationGuy
@osnapitzkindle: Ich glaube nicht, dass ein C++ 11-Compiler den 'Schalter' in einer 'constexpr'-Funktion akzeptiert, aber Sie können einen booleschen Ausdruck verwenden. –