/Zc:static_assert
(strikte verwerking van static_assert)
De optie /Zc:static_assert
compiler vertelt de compiler om static_assert
aanroepen te evalueren met niet-afhankelijke testexpressies wanneer klasse- of functiesjablonen worden geparseerd.
Syntaxis
/Zc:static_assert
/Zc:static_assert-
Opmerkingen
Vanaf Visual Studio 17.10 hebben /Zc:static_assert
en /Zc:static_assert-
geen effect. Beide opties worden genegeerd om te voorkomen dat builds fouten veroorzaken die ze gebruiken.
static_assert
wordt nu nooit geëvalueerd bij het parseren van klasse- of functiesjablonen.
De optie /Zc:static_assert
compiler vertelt de compiler een static_assert
te evalueren in de hoofdtekst van een functiesjabloon of in de hoofdtekst van een klassesjabloonlidfunctie wanneer deze voor het eerst wordt geparseerd, als de testexpressie niet afhankelijk is. Als de niet-afhankelijke testexpressie false
is, verzendt de compiler onmiddellijk een fout. Wanneer de testexpressie afhankelijk is, wordt de static_assert
pas geëvalueerd nadat de sjabloon is geïnstantieerd.
De optie /Zc:static_assert
is beschikbaar vanaf Visual Studio 2022 versie 17.1. In eerdere versies van Visual Studio of als /Zc:static_assert-
is opgegeven, voert Visual Studio geen afhankelijke analyse uit als de static_assert
zich in de hoofdtekst van een functiesjabloon of in de hoofdtekst van een lidfunctie van een klassesjabloon bevindt. In plaats daarvan wordt alleen de static_assert
geëvalueerd wanneer een sjabloon wordt geïnstantieerd.
Met de optie /permissive-
kunt u /Zc:static_assert
inschakelen, zodat deze standaard is ingeschakeld in projecten die gebruikmaken van /std:c++20
of /std:c++latest
. De optie /Zc:static_assert-
moet na een /std:c++20
, /std:c++latest
of /permissive-
optie op de opdrachtregel komen.
Als de compiler zich in de standaardmodus C++14 bevindt en /permissive-
of /Zc:static_assert
is opgegeven, wordt /Zc:static_assert
gedrag gebruikt. Als er echter een static_assert
in een sjabloontekst wordt geëvalueerd, wordt ook standaardwaarschuwing C5254 gerapporteerd, 'taalfunctie 'terse static assert' vereist compilervlag '/std:c++17
'', omdat dit gedrag pas is vereist als C++17.
Deze compileroptie instellen in Visual Studio
Open het dialoogvenster eigenschappenpagina's van het project. Zie C++-compiler instellen en eigenschappen bouwen in Visual Studiovoor meer informatie.
Selecteer de eigenschappenpagina configuratie-eigenschappen>C/C++>opdrachtregel.
Voeg
/Zc:static_assert
of/Zc:static_assert-
toe aan het deelvenster Aanvullende opties: deelvenster.