Assert statique sur paramètres connu (ou non) à la compilation
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):
Code:
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
} |
Je ne sais même pas en fait si c'est possible en C++ ^^!
Merci pour votre aide