The `stdatomic.h` header cannot be included under MSVC when in C++ mode
as the toolsets prior to 17.5.0 Preview 2 do not support the C11
atomics. However, some toolsets prior to the aforementioned version
support the atomics under the C++ mode. In these versions the MSVC
toolset protects against the contamination by entirely eliding the
declarations, resulting in build failures in some cases. Unfortunately,
e0c3142af075e2ef89395dbed5939071345eb622 accidentally regressed the C
case when fixing the C++ support.
Unfortunately, we cannot test this reliably as we need to inject a
header after the resource path as a system header path, which we do not
have a reliable means of doing.
Fixes: #59640
*/
#if __STDC_HOSTED__ && \
__has_include_next(<stdatomic.h>) && \
- !(defined(_MSC_VER) && defined(__cplusplus) && __cplusplus < 202002L)
+ (!defined(_MSC_VER) || (defined(__cplusplus) && __cplusplus >= 202002L))
# include_next <stdatomic.h>
#else