Hi @MikhailFilimonov & Zingram,
#1 above is not a bug. The MSVC compiler defines __cplusplus to 199711L because we don’t yet have C++98 conformance. We’re still lacking two-phase name lookup and a conforming preprocessor. Until our compiler conforms to the standard we’ll stay at this value.
The good news is that we have been hard at work on conformance and expect to fully conform to C++14 (including C++11 and C++98) this year. We’ve also gotten a number of C++17 features implemented ready and are on-track to conform with C++17 around the time that ISO publishes the standard. Moreover, we’ve got a number of coming Technical Specifications implemented or in-progress including Coroutines, Modules, Ranges, and Concepts.
You can read more about MSVC’s conformance work in this blog post: https://blogs.msdn.microsoft.com/vcblog/2017/03/07/c-standards-conformance-from-microsoft. And you’re welcome to email me at visualcpp at Microsoft if there’s anything I can do to help you with regards to MSVC. (A handful of us watch that email address. My direct mail is my NVidia Devtalk firstname.lastname@example.org.)
MSVC compiler & tools