Otherwise it always returns the value for c++98, starting with MSVC 2017 15.7 or later. Earlier versions are not affected by this mis-featurepull/9098/head
parent
042adba204
commit
0b97d58548
6 changed files with 40 additions and 2 deletions
@ -0,0 +1,7 @@ |
||||
## MSVC now sets the __cplusplus #define accurately |
||||
|
||||
For reasons, MSVC will always return `199711L` for `__cplusplus`, even when a |
||||
newer c++ standard is explicitly requested, unless you pass a specific option to |
||||
the compiler for MSVC 2017 15.7 and newer. Older versions are unaffected by |
||||
this. Meson now always sets the option if it is available, as it is unlikley |
||||
that users want the default behavior. |
@ -0,0 +1,7 @@ |
||||
int main() { |
||||
#if __cplusplus == 199711L |
||||
return 1; |
||||
#else |
||||
return 0; |
||||
#endif |
||||
} |
@ -0,0 +1,14 @@ |
||||
project('msvc __cplusplus', 'cpp', default_options : ['cpp_std=c++14']) |
||||
|
||||
cpp = meson.get_compiler('cpp') |
||||
|
||||
if cpp.get_id() != 'msvc' |
||||
error('MESON_SKIP_TEST: test is only relavent for msvc') |
||||
elif meson.project_version().version_compare('< 15.7') |
||||
error('MESON_SKIP_TEST: test is only relavent for msvc versions >= 15.7') |
||||
endif |
||||
|
||||
test( |
||||
'main', |
||||
executable('main', 'main.cpp'), |
||||
) |
@ -1,4 +1,4 @@ |
||||
project('wincpp', 'cpp') |
||||
project('wincpp', 'cpp', default_options : ['cpp_std=c++14']) |
||||
|
||||
exe = executable('prog', 'prog.cpp') |
||||
test('wincpp', exe) |
||||
|
Loading…
Reference in new issue