summaryrefslogtreecommitdiffstats
path: root/Help/dev
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-08-11 17:19:05 (GMT)
committerBrad King <brad.king@kitware.com>2017-08-16 14:13:38 (GMT)
commitfd4fd9a276126a1b1044d57a064c3b8201a91a33 (patch)
tree4c0868140907e09853e2e65484fcab2beaf1b9cb /Help/dev
parentc47c011c77bfd1bfb8d2060511a2b957ce181c62 (diff)
downloadCMake-fd4fd9a276126a1b1044d57a064c3b8201a91a33.zip
CMake-fd4fd9a276126a1b1044d57a064c3b8201a91a33.tar.gz
CMake-fd4fd9a276126a1b1044d57a064c3b8201a91a33.tar.bz2
Require C++11 to build CMake itself
CMake can now compile as C++11 on all supported platforms. Check that std::unique_ptr is available and fail early if missing. This will allow us to use C++11 more broadly in CMake's implementation (previously it was restricted to the serve mode implementation). Co-Author: Daniel Pfeifer <daniel@pfeifer-mail.de>
Diffstat (limited to 'Help/dev')
-rw-r--r--Help/dev/source.rst16
1 files changed, 7 insertions, 9 deletions
diff --git a/Help/dev/source.rst b/Help/dev/source.rst
index 16a9252..b40a884 100644
--- a/Help/dev/source.rst
+++ b/Help/dev/source.rst
@@ -23,20 +23,18 @@ format only a subset of files, such as those that are locally modified.
C++ Subset Permitted
====================
-CMake supports compiling as C++98 in addition to C++11 and C++14.
-In order to support building on older toolchains some constructs
-need to be handled with care:
+CMake requires compiling as C++11 or above. However, in order to support
+building on older toolchains some constructs need to be handled with care:
-* Use ``CM_AUTO_PTR`` instead of ``std::auto_ptr``.
+* Do not use ``CM_AUTO_PTR`` or ``std::auto_ptr``.
- The ``std::auto_ptr`` template is deprecated in C++11. We want to use it
- so we can build on C++98 compilers but we do not want to turn off compiler
- warnings about deprecated interfaces in general. Use the ``CM_AUTO_PTR``
- macro instead.
+ The ``std::auto_ptr`` template is deprecated in C++11. The ``CM_AUTO_PTR``
+ macro remains leftover from C++98 support until its uses can be ported to
+ ``std::unique_ptr``. Do not add new uses of the macro.
* Use ``CM_EQ_DELETE;`` instead of ``= delete;``.
- Defining functions as *deleted* is not supported in C++98. Using
+ 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