Assertions statiques (C++11)

De RAD Studio
Aller à : navigation, rechercher

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.

Voir aussi