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 : 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
}
Je ne sais même pas en fait si c'est possible en C++ ^^!
Merci pour votre aide