2015-08-06 1 views
0

par exemple,C++ modèle vérification de type validation

enum tr {z, u}; 

template<tr T> 
class test 
{ 
     assert(T is z or u);//how can I add assertions in this field? 
}; 

dans le commentaire comment puis-je ajouter du code à affirmer le T modèle ne devrait être z ou u?

+2

Vouliez-vous utiliser [ 'std :: static_assert'] (http: // fr. cppreference.com/w/cpp/language/static_assert)? –

Répondre

2

Cela peut être fait en utilisant static_assert comme @ πάντα-ῥεῖ déjà signalé:

enum tr {z, u, bar}; 

template<tr T> 
class test 
{ 
     static_assert(T==z||T==u, "T must be z or u"); 
}; 

int main() 
{ 
    test<z> t_valid; 
    test<bar> t_fails; // compilation fails 
    return 0; 
} 

live on ideone