Share via


/Zc:static_assert (Gestion stricte des static_assert)

L’option /Zc:static_assert du compilateur indique au compilateur d’évaluer static_assert les appels avec des expressions de test non dépendantes lorsque les modèles de classe ou de fonction sont analysés.

Syntaxe

/Zc:static_assert
/Zc:static_assert-

Notes

L’option /Zc:static_assert du compilateur indique au compilateur d’évaluer une static_assert valeur dans le corps d’un modèle de fonction ou dans le corps d’une fonction membre de modèle de classe lors de l’analyse initiale, si l’expression de test n’est pas dépendante. Si l’expression de test non dépendante n’est pas false, le compilateur émet immédiatement une erreur. Lorsque l’expression de test dépend, elle static_assert n’est pas évaluée tant que le modèle n’est pas instancié.

L’option /Zc:static_assert est disponible à partir de Visual Studio 2022 version 17.1. Dans les versions antérieures de Visual Studio, ou si /Zc:static_assert- elle est spécifiée, Visual Studio ne fait pas d’analyse dépendante si le static_assert corps d’un modèle de fonction ou dans le corps d’une fonction membre d’un modèle de classe. Au lieu de cela, elle évalue uniquement le static_assert moment où un modèle est instancié.

L’option /permissive- active /Zc:static_assert, donc elle est activée par défaut dans les projets qui utilisent /std:c++20 ou /std:c++latest. L’option /Zc:static_assert- doit se trouver après un /std:c++20, /std:c++latestou /permissive- une option sur la ligne de commande.

Si le compilateur est en mode C++14 par défaut et /permissive- qu’il /Zc:static_assert est spécifié, il utilise /Zc:static_assert le comportement. Toutefois, si elle évalue un static_assert corps de modèle, elle signale également un avertissement désactivé par défaut C5254, « la fonctionnalité de langage « terse static assert » nécessite l’indicateur du compilateur «/std:c++17 », car ce comportement n’est pas requis tant que C++17 n’est pas nécessaire.

Pour définir cette option de compilateur dans Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.

  2. Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.

  3. Ajoutez ou /Zc:static_assert- accédez /Zc:static_assert aux options supplémentaires : volet.

Voir aussi

/Zc (Conformité)