NVHPC: Fix detection of C++ 20 mode on NVHPC < 22.7

This compiler does not always define `__cplusplus` correctly, but does
define a feature macro that we can use to distinguish this mode.
This commit is contained in:
Brad King
2024-04-05 07:07:16 -04:00
parent 3587579f34
commit 7f05d472a2
2 changed files with 12 additions and 0 deletions

View File

@@ -58,6 +58,12 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
# endif
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
# define CXX_STD _MSVC_LANG
#elif defined(__NVCOMPILER)
# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init)
# define CXX_STD CXX_STD_20
# else
# define CXX_STD __cplusplus
# endif
#elif defined(__INTEL_COMPILER)
# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes)
# define CXX_STD CXX_STD_17

View File

@@ -27,6 +27,12 @@ struct Outputter;
# endif
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
# define CXX_STD _MSVC_LANG
#elif defined(__NVCOMPILER)
# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init)
# define CXX_STD CXX_STD_20
# else
# define CXX_STD __cplusplus
# endif
#elif defined(__INTEL_COMPILER)
# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes)
# define CXX_STD CXX_STD_17