Browse Source

Merge pull request #96244 from Repiteo/scons/msvc-__cplusplus

SCons: Pass `/Zc:__cplusplus` in MSVC builds
Rémi Verschelde 11 months ago
parent
commit
a8e3feb788
2 changed files with 5 additions and 0 deletions
  1. 2 0
      SConstruct
  2. 3 0
      core/typedefs.h

+ 2 - 0
SConstruct

@@ -791,6 +791,8 @@ else:
     # Note that this is still not complete conformance, as certain Windows-related headers
     # don't compile under complete conformance.
     env.Prepend(CCFLAGS=["/permissive-"])
+    # Allow use of `__cplusplus` macro to determine C++ standard universally.
+    env.Prepend(CXXFLAGS=["/Zc:__cplusplus"])
 
 # Disable exception handling. Godot doesn't use exceptions anywhere, and this
 # saves around 20% of binary size and very significant build time (GH-80513).

+ 3 - 0
core/typedefs.h

@@ -44,6 +44,9 @@
 #include "core/error/error_list.h"
 #include <cstdint>
 
+// Ensure that C++ standard is at least C++17. If on MSVC, also ensures that the `Zc:__cplusplus` flag is present.
+static_assert(__cplusplus >= 201703L);
+
 // Turn argument to string constant:
 // https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html#Stringizing
 #ifndef _STR