2For example, if a Visual Studio project that uses the /std:c++17 compiler option omits the option –compiler-cpp-options="/std:c++17" when generating the compiler configuration then the type std::optional from the <optional> header will be disabled by a version check within the standard library and the message class template optional is only available with C++17 or later. will be emitted by a preprocessing directive. This also applies to other C++17 library features like std::any.