Udostępnij za pośrednictwem


/Zc:static_assert (Ścisła obsługa static_assert)

Opcja /Zc:static_assert kompilatora informuje kompilator o ocenie static_assert wywołań przy użyciu niezależnych wyrażeń testowych, gdy klasy lub szablony funkcji są analizowane.

Składnia

/Zc:static_assert
/Zc:static_assert-

Uwagi

Począwszy od programu Visual Studio 17.10, /Zc:static_assert i /Zc:static_assert- nie mają żadnego wpływu. Obie opcje są ignorowane, aby uniknąć kompilacji powodujących niezgodność, które ich używają. static_assert nigdy nie jest obliczana podczas analizowania klas lub szablonów funkcji.

Opcja /Zc:static_assert kompilatora nakazuje kompilatorowi ocenę static_assert elementu w treści szablonu funkcji lub w treści funkcji składowej szablonu klasy po pierwszym przeanalizowaniu, jeśli wyrażenie testowe nie jest zależne. Jeśli wyrażenie testowe nie zależne jest false, kompilator natychmiast emituje błąd. Gdy wyrażenie testowe jest zależne, static_assert nie jest oceniane, dopóki szablon nie zostanie utworzone.

Opcja /Zc:static_assert jest dostępna od wersji 17.1 programu Visual Studio 2022. We wcześniejszych wersjach programu Visual Studio lub jeśli /Zc:static_assert- jest określona, program Visual Studio nie wykonuje analizy zależnej, jeśli static_assert element znajduje się w treści szablonu funkcji lub w treści funkcji składowej szablonu klasy. Zamiast tego ocenia static_assert tylko wystąpienie szablonu.

Opcja /permissive- włącza funkcję /Zc:static_assert, więc jest domyślnie włączona w projektach korzystających z /std:c++20 programu lub /std:c++latest. Opcja /Zc:static_assert- musi pochodzić po /std:c++20opcji , /std:c++latestlub /permissive- w wierszu polecenia.

Jeśli kompilator jest w domyślnym trybie C++14 lub /permissive-/Zc:static_assert jest określony, używa /Zc:static_assert zachowania. Jeśli jednak ocenia element static_assert w treści szablonu, zgłasza również ostrzeżenie off-by-default C5254, "funkcja języka "terse static assert" wymaga flagi kompilatora "/std:c++17", ponieważ to zachowanie nie jest wymagane do czasu języka C++17.

Aby ustawić tę opcję kompilatora w programie Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).

  2. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

  3. Dodaj /Zc:static_assert lub /Zc:static_assert- do okienka Dodatkowe opcje: .

Zobacz też

/Zc (Zgodność)