Dela via


/Zc:static_assert (strikt static_assert hantering)

Alternativet /Zc:static_assert kompilator instruerar kompilatorn att utvärdera static_assert-anrop med icke-beroende testuttryck när klass- eller funktionsmallar parsas.

Syntax

/Zc:static_assert
/Zc:static_assert-

Anmärkningar

Från och med Visual Studio 17.10 har /Zc:static_assert och /Zc:static_assert- ingen effekt. Båda alternativen ignoreras för att undvika icke-bakåtkompatibla versioner som använder dem. static_assert utvärderas nu aldrig när du parsar klass- eller funktionsmallar.

Alternativet /Zc:static_assert kompilator instruerar kompilatorn att utvärdera en static_assert i brödtexten i en funktionsmall eller i brödtexten i en medlemsfunktion för en klassmall när den först parsas, om testuttrycket inte är beroende. Om det icke-beroende testuttrycket är falsegenererar kompilatorn ett fel omedelbart. När testuttrycket är beroende utvärderas inte static_assert förrän mallen instansieras.

Alternativet /Zc:static_assert är tillgängligt från och med Visual Studio 2022 version 17.1. I tidigare versioner av Visual Studio, eller om /Zc:static_assert- anges, utför Visual Studio inte beroende analys om static_assert finns i brödtexten i en funktionsmall eller i brödtexten för en medlemsfunktion i en klassmall. I stället utvärderas bara static_assert när en mall instansieras.

Alternativet /permissive- aktiverar /Zc:static_assert, så det är aktiverat som standard i projekt som använder /std:c++20 eller /std:c++latest. Alternativet /Zc:static_assert- måste komma efter ett /std:c++20, /std:c++latesteller /permissive- på kommandoraden.

Om kompilatorn är i standardläget C++14 och /permissive- eller /Zc:static_assert anges används /Zc:static_assert beteende. Men om den utvärderar en static_assert i en malltext, rapporterar den också off-by-default varning C5254, "språkfunktionen "terse static assert" kräver kompilatorflaggan/std:c++17", eftersom det här beteendet inte krävs förrän C++17.

Ange det här kompilatoralternativet i Visual Studio

  1. Öppna dialogrutan egenskapssidor för projektet. Mer information finns i Ange C++-kompilator- och byggegenskaper i Visual Studio.

  2. Välj egenskapssidan Konfigurationsegenskaper>C/C++>kommandorad.

  3. Lägg till /Zc:static_assert eller /Zc:static_assert- i fönstret Ytterligare alternativ:.

Se även

/Zc (överensstämmelse)