Assertions statiques (C++11)
Remonter à Fonctionnalités C++11 - Index
Le mot clé static_assert est utilisé pour tester les assertions durant la compilation. C'est l'une des fonctionnalités ajoutées à C++Builder 2009.
Ce mot clé opère d'une façon différente de la macro assert, qui déclenche des assertions durant l'exécution. Le mot clé static_assert diffère également de la directive de préprocesseur #error, qui opère durant le prétraitement et émet simplement un message.
Syntaxe
La déclaration d'une assertion statique est :
static_assert (expression-constante, message erreur);
expression-constante doit être une expression qui peut être évaluée statiquement comme un booléen. Si expression-constante est évaluée à true, l'instruction ne fait rien. Si elle est évaluée à false, le compilateur génère une erreur avec le texte message-erreur.
Puisque l'assertion est testée à la compilation, static_assert peut faire une erreur de vérification dans les templates. Par exemple :
template <class T> T Test(T x, T y) { static_assert(sizeof T <= sizeof long, "Type trop grand"); ... };
static_assert est utile pour la vérification de type statique. Une certaine fonction peut échouer si l'implémentation d'un int est trop petit, ainsi static_assert a son utilité en dehors des templates.