From 8345d5eba80a11de363c8a96070316fdd6b6fd22 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 14 Jan 2021 14:31:27 +0200 Subject: Pass /Zc:__cplusplus by default starting from VC 15.7 (GitHub issue #107) This can be overridden by passing a variant of this option as part of the compiler mode options. --- libbuild2/cxx/init.cxx | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libbuild2/cxx') diff --git a/libbuild2/cxx/init.cxx b/libbuild2/cxx/init.cxx index ad0dd05..e2d7343 100644 --- a/libbuild2/cxx/init.cxx +++ b/libbuild2/cxx/init.cxx @@ -189,6 +189,17 @@ namespace build2 if (!o.empty ()) prepend (move (o)); + // Since VC 15.7 we can get a (more) accurate __cplusplus value if + // we ask for it with /Zc:__cplusplus: + // + // https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ + // + if (mj > 19 || (mj == 19 && mi >= 14)) + { + if (!find_option_prefix ("/Zc:__cplusplus", mode)) + prepend ("/Zc:__cplusplus"); + } + break; } case compiler_class::gcc: -- cgit v1.1