


You can explicitly enable Microsoft extension support by using the /permissive option without the trailing dash. Perhaps your code doesn't need modules support but requires other features enabled under /std:c++20 or /std:c++latest. permissive- is required for C++20 Modules support. The /permissive- option is implicitly set by the /std:c++latest option starting in Visual Studio 2019 version 16.8, and in version 16.11 by the /std:c++20 option. To restrict the compiler support to more closely match the C++14 standard, use the /std:c++14 option, which is the default. To restrict the compiler support to the currently implemented C++17 standard, use the /std:c++17 option. To restrict the compiler support to the currently implemented C++20 standard, use the /std:c++20 option. To enable all implemented compiler support for the latest draft standard, use the /std:c++latest option. The option doesn't determine if your code conforms to a specific version of the C++ standard. The /permissive- option uses the conformance support in the current compiler version to determine which language constructs are non-conforming. In the IDE, this option also makes the IntelliSense engine underline non-conforming code. This option disables permissive behaviors, and sets the /Zc compiler options for strict conformance. You can use the /permissive- compiler option to specify standards-conforming compiler behavior. permissive is supported in Visual Studio 2019 version 16.8 and later. The /permissive- option is supported in Visual Studio 2017 and later. Use this option to help you identify and fix conformance issues in your code, to make it both more correct and more portable. Specify standards conformance mode to the compiler.
