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') |
exe = executable('prog', 'prog.cpp') |
||||||
test('wincpp', exe) |
test('wincpp', exe) |
||||||
|
Loading…
Reference in new issue