Bonjour à tous,
Je souhaite écrire une fonction qui réalise des vérifications à la compilation mais j'avoue ne pas voir comment m'y prendre: idéalement je voudrais que ma fonction prenne un paramètre (par exemple un int) et que je puisse faire des assertions statique en fonction de si ce paramètre est connu à la compilation (et vérifie certaines propriétés).
Un exemple valant (j'espère!) plus qu'un long discours, voilà en gros ce que je voudrais faire (les commentaires dans le code expliquent mon intention):
Je ne sais même pas en fait si c'est possible en C++ ^^!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 template<typename T> void f(T* data, int taille) { //assert statique si taille n'est pas connue à la compilation ou si elle est différente de sizeof(T); } int main() { int i=0; f(&i, sizeof(i)); //ok ça passe, taille est connue à la compilation est vaut sizeof(T) f(&i, sizeof(long)); //ko, taille est connue à la compilation mais ne vaut pas sizeof(T) f(&i, i); //ko, taille n'est pas connue à la compilation }
Merci pour votre aide
Partager