From b8018135b5729b5c74a0c95ab2b8cc8677fbe5b8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 28 Sep 2017 09:50:18 -0400 Subject: Use C++11 '= delete' instead of CM_EQ_DELETE We now require C++11 support including `= delete`. Drop use of the old compatibility macro. --- Help/dev/source.rst | 8 -------- Source/Checks/cm_cxx_eq_delete.cxx | 14 -------------- Source/Checks/cm_cxx_features.cmake | 1 - Source/cmConfigure.cmake.h.in | 11 ++--------- Source/cmSourceFileLocation.h | 3 +-- bootstrap | 1 - 6 files changed, 3 insertions(+), 35 deletions(-) delete mode 100644 Source/Checks/cm_cxx_eq_delete.cxx diff --git a/Help/dev/source.rst b/Help/dev/source.rst index 96fc4a7..d0c19eb 100644 --- a/Help/dev/source.rst +++ b/Help/dev/source.rst @@ -30,14 +30,6 @@ building on older toolchains some constructs need to be handled with care: The ``std::auto_ptr`` template is deprecated in C++11. Use ``std::unique_ptr``. -* Use ``CM_EQ_DELETE;`` instead of ``= delete;``. - - Older C++11 compilers do not support deleting functions. Using - ``CM_EQ_DELETE`` will delete the functions if the compiler supports it and - give them no implementation otherwise. Calling such a function will lead - to compiler errors if the compiler supports *deleted* functions and linker - errors otherwise. - * Use ``CM_DISABLE_COPY(Class)`` to mark classes as non-copyable. The ``CM_DISABLE_COPY`` macro should be used in the private section of a diff --git a/Source/Checks/cm_cxx_eq_delete.cxx b/Source/Checks/cm_cxx_eq_delete.cxx deleted file mode 100644 index 809e4cf..0000000 --- a/Source/Checks/cm_cxx_eq_delete.cxx +++ /dev/null @@ -1,14 +0,0 @@ -struct Foo -{ - Foo() {} - ~Foo() {} - Foo(Foo const&) = delete; - Foo& operator=(Foo const&) = delete; - int test() const { return 0; } -}; - -int main() -{ - Foo const foo; - return foo.test(); -} diff --git a/Source/Checks/cm_cxx_features.cmake b/Source/Checks/cm_cxx_features.cmake index 7755cfe..a30a5e6 100644 --- a/Source/Checks/cm_cxx_features.cmake +++ b/Source/Checks/cm_cxx_features.cmake @@ -41,7 +41,6 @@ function(cm_check_cxx_feature name) endif() endfunction() -cm_check_cxx_feature(eq_delete) cm_check_cxx_feature(fallthrough) if(NOT CMake_HAVE_CXX_FALLTHROUGH) cm_check_cxx_feature(gnu_fallthrough) diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in index 5f3110c..9a78aca 100644 --- a/Source/cmConfigure.cmake.h.in +++ b/Source/cmConfigure.cmake.h.in @@ -19,7 +19,6 @@ #cmakedefine HAVE_UNSETENV #cmakedefine CMAKE_USE_ELF_PARSER #cmakedefine CMAKE_USE_MACH_PARSER -#cmakedefine CMake_HAVE_CXX_EQ_DELETE #cmakedefine CMake_HAVE_CXX_FALLTHROUGH #cmakedefine CMake_HAVE_CXX_GNU_FALLTHROUGH #cmakedefine CMake_HAVE_CXX_ATTRIBUTE_FALLTHROUGH @@ -27,12 +26,6 @@ #define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@" #define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@" -#ifdef CMake_HAVE_CXX_EQ_DELETE -#define CM_EQ_DELETE = delete -#else -#define CM_EQ_DELETE -#endif - #if defined(CMake_HAVE_CXX_FALLTHROUGH) #define CM_FALLTHROUGH [[fallthrough]] #elif defined(CMake_HAVE_CXX_GNU_FALLTHROUGH) @@ -44,7 +37,7 @@ #endif #define CM_DISABLE_COPY(Class) \ - Class(Class const&) CM_EQ_DELETE; \ - Class& operator=(Class const&) CM_EQ_DELETE; + Class(Class const&) = delete; \ + Class& operator=(Class const&) = delete; #endif diff --git a/Source/cmSourceFileLocation.h b/Source/cmSourceFileLocation.h index fb5b330..467682d 100644 --- a/Source/cmSourceFileLocation.h +++ b/Source/cmSourceFileLocation.h @@ -90,8 +90,7 @@ private: void Update(cmSourceFileLocation const& loc); void UpdateExtension(const std::string& name); - cmSourceFileLocation& operator=(const cmSourceFileLocation& loc) - CM_EQ_DELETE; + cmSourceFileLocation& operator=(const cmSourceFileLocation& loc) = delete; }; #endif diff --git a/bootstrap b/bootstrap index f7f45cf..47f7e76 100755 --- a/bootstrap +++ b/bootstrap @@ -1270,7 +1270,6 @@ cmake_report cmConfigure.h${_tmp} "#define CMAKE_BOOTSTRAP_BINARY_DIR \"${CMAKE_ cmake_report cmConfigure.h${_tmp} "#define CMAKE_BIN_DIR \"/bootstrap-not-insalled\"" cmake_report cmConfigure.h${_tmp} "#define CMAKE_DATA_DIR \"/bootstrap-not-insalled\"" cmake_report cmConfigure.h${_tmp} "#define CMAKE_BOOTSTRAP" -cmake_report cmConfigure.h${_tmp} "#define CM_EQ_DELETE" cmake_report cmConfigure.h${_tmp} "#define CM_FALLTHROUGH" cmake_report cmConfigure.h${_tmp} "#define CM_DISABLE_COPY(Class)" -- cgit v0.12