c'è un modo, al momento della compilazione, per verificare che un dato valore è entro i valori di un dato enum, così valida?C++ 11 metaprogrammazione - lookup valore enum durante la compilazione (valori contiene lacune)
enum myenum { val1 = 10, val2 = 30, val3 = 45 }
template <myenum t>
class myClass
{ ... }
myClass<10> a; // fails, OK
myClass<val1> b; // compiles OK
myClass<myenum(24)> c; //compiles, NOT OK!
Utilizzando un non-tipo di parametro booleano secondo modello sarebbe utile lì, e il valore di tale booleano sarebbe dato da una meta-funzione, che dato un valore potrebbe verificare che il valore rientra nei valori di myenum.
Ho esaminato varie domande relative all'enumerazione, ad esempio come iterare un'enumerazione e sembra che non possa essere eseguita.
Con un cast di tipo 'C', non penso che sia possibile impedirlo. – Chad
'myenum (24)' è ancora un valore valido di quel tipo. Potresti non voler gestire tale valore, ma è comunque valido. Nei tipi di enumerazione C e C++ non sono limitati ai valori che corrispondono agli enumeratori, che è di progettazione ed è una buona cosa. –
@JonathanWakely Penso che non sia una buona cosa * non avere l'altra opzione *. –