diff options
author | Brad King <brad.king@kitware.com> | 2018-08-01 18:01:47 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-08-01 18:03:43 (GMT) |
commit | 3a2c736b41fb394b389607b0ccf96611c42319f5 (patch) | |
tree | a3d6c99511d3f636dfb805308d41e29e41c841cc | |
parent | f0e82ce9a2f50e7ce0b9b95dcf32e47ce9a08369 (diff) | |
download | CMake-3a2c736b41fb394b389607b0ccf96611c42319f5.zip CMake-3a2c736b41fb394b389607b0ccf96611c42319f5.tar.gz CMake-3a2c736b41fb394b389607b0ccf96611c42319f5.tar.bz2 |
Extend C++17/C++14 feature checks to require unique_ptr
When testing compiler modes higher than C++11 for constructs we need,
include a check for using `unique_ptr` in that mode. The PGI 18.4
compiler in some environments supports `unique_ptr` in C++11 mode
but is broken for C++14 and C++17. Check that `unique_ptr` works
in these modes before using one.
-rw-r--r-- | Source/Checks/cm_cxx14_check.cmake | 2 | ||||
-rw-r--r-- | Source/Checks/cm_cxx14_check.cpp | 5 | ||||
-rw-r--r-- | Source/Checks/cm_cxx17_check.cmake | 2 | ||||
-rw-r--r-- | Source/Checks/cm_cxx17_check.cpp | 4 |
4 files changed, 9 insertions, 4 deletions
diff --git a/Source/Checks/cm_cxx14_check.cmake b/Source/Checks/cm_cxx14_check.cmake index a78ba35..38606b9 100644 --- a/Source/Checks/cm_cxx14_check.cmake +++ b/Source/Checks/cm_cxx14_check.cmake @@ -1,5 +1,5 @@ set(CMake_CXX14_BROKEN 0) -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|PGI") if(NOT CMAKE_CXX14_STANDARD_COMPILE_OPTION) set(CMake_CXX14_WORKS 0) endif() diff --git a/Source/Checks/cm_cxx14_check.cpp b/Source/Checks/cm_cxx14_check.cpp index f5806a9..9369ba2 100644 --- a/Source/Checks/cm_cxx14_check.cpp +++ b/Source/Checks/cm_cxx14_check.cpp @@ -1,5 +1,8 @@ #include <cstdio> +#include <memory> + int main() { - return 0; + std::unique_ptr<int> u(new int(0)); + return *u; } diff --git a/Source/Checks/cm_cxx17_check.cmake b/Source/Checks/cm_cxx17_check.cmake index 83d3971..4da2fd7 100644 --- a/Source/Checks/cm_cxx17_check.cmake +++ b/Source/Checks/cm_cxx17_check.cmake @@ -1,5 +1,5 @@ set(CMake_CXX17_BROKEN 0) -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|PGI") if(NOT CMAKE_CXX17_STANDARD_COMPILE_OPTION) set(CMake_CXX17_WORKS 0) endif() diff --git a/Source/Checks/cm_cxx17_check.cpp b/Source/Checks/cm_cxx17_check.cpp index 2cbf1d5..4e89184 100644 --- a/Source/Checks/cm_cxx17_check.cpp +++ b/Source/Checks/cm_cxx17_check.cpp @@ -1,7 +1,9 @@ #include <cstdio> +#include <memory> #include <unordered_map> int main() { - return 0; + std::unique_ptr<int> u(new int(0)); + return *u; } |