[Cmake-commits] CMake branch, next, updated. v3.0.0-rc3-2147-g69982fe

Stephen Kelly steveire at gmail.com
Tue Apr 8 05:07:48 EDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  69982fe430aceeb05bd3c6d9686384b1d728ca8c (commit)
       via  60c0d2dd812af663b2b009a253072dc481b604fe (commit)
       via  c4e672358c4945e78234b8c7075924c80750d61b (commit)
       via  dcaafada0e213ae74082be84812a38d7f2a4a860 (commit)
       via  251a1f02a0ae7eb93690dd0daad8575a3c0451b3 (commit)
       via  53fe7773e6335b71161310a2c948bc99145ee59e (commit)
       via  16603f7cdb76ad4f9377d583b5234d92f85dd22d (commit)
       via  adf22f611e2e4213df31cc7e1d8c1513847b72ff (commit)
       via  7b3e8a05349e13ee300980c1a4789cc9175a6c42 (commit)
       via  9a49fd21bedacdda51ecfa82a15a0e52dd64948f (commit)
       via  1889045ca672e295c18203401c27a9e62ff45424 (commit)
       via  ab455ebafd55653f87168d9e6c32cfc15403a973 (commit)
       via  300ce2481eae64f44ca4a4bec4f975db4f3e16c8 (commit)
       via  f9d04a96b57ad5f68259b978983289043ae22716 (commit)
       via  3d76656fb3db56f364bbf7a7655ab1433b72d284 (commit)
       via  e74b216c90d33548e7b248276346a5d00eff5ee3 (commit)
       via  ff80c3b4201918c2f30241972d3553a99571eed8 (commit)
       via  7605fee593a00e0345a4842241ff1f2a043b7ebf (commit)
       via  e7d6e1f44f0f3bcf7ded76ec8d649b7a0552778c (commit)
       via  32c2acd65c3d48433a50a6c2f9fc00c2a1a699f4 (commit)
       via  9064f78b0c07a79f25ee04cf8afaf726d18ec722 (commit)
       via  3322b393a265747ae7c187d426f7f1676b478de4 (commit)
       via  04c5b99f38aef9a5c9627c35659891aecd8ab41e (commit)
       via  e1e292cd069bf811b0635088539aace0f0eeaf68 (commit)
       via  3300f783104b89c00bde1904e5528e9564c479a2 (commit)
       via  b1c5bd531417b74ddb2cb4365c49f0723c7a8e75 (commit)
       via  ea9c445f066589067992694cb6abc0d70ad97dd7 (commit)
       via  735adf2c94c1ee0cca710c6eb0bade2b84c461de (commit)
       via  0fa9bbf1fa5278d965cbbb7de82f56ef42789fe8 (commit)
       via  8149fc909fb2c26235fea8999ea9396d7b45fba7 (commit)
       via  bd2a025eb0ec26dc32d6eb4c9c3da22f68608b27 (commit)
       via  15cdf6f51dde9a394ffc7a398e201e59cc959111 (commit)
       via  a579a0aab4e55aeb0a71dc7c1b58db3d126e1fd4 (commit)
       via  ebab2015f9b9b11f09e19369be7a1c8d3bfe3ae4 (commit)
       via  ac3a1b14c0235cb21b1cce445269426e84e46ae1 (commit)
       via  91f3699000084804100a782e93509a3a53adc2a8 (commit)
       via  7e748417bc8e06caa8eb0b6a6258b7d24cc22bfb (commit)
       via  8d3467636c4fad32c25390244a62e58e068c33ad (commit)
       via  0caf08e43ef405a879393cb3a4bae0b6b87e26b6 (commit)
       via  0685ac6edc8f9285e7b12d32a182e569a372856c (commit)
       via  57ac6a905c33211af420aaf1e7fc14b3871a7b16 (commit)
       via  88542a61011d13ed0a92b9a1da49d428846aaf20 (commit)
       via  91289312fa9da0807b5c59a78de2c5ad21d6cda1 (commit)
       via  10f33eee1dfefa9e5a2ee5cf4946095bf08b19bc (commit)
       via  750dfee29c3f45020e8fcff91499a2542913b649 (commit)
      from  a0e3736726eb737a8b50e581f1ebd4148f4c3521 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=69982fe430aceeb05bd3c6d9686384b1d728ca8c
commit 69982fe430aceeb05bd3c6d9686384b1d728ca8c
Merge: a0e3736 60c0d2d
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Apr 8 05:07:44 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Apr 8 05:07:44 2014 -0400

    Merge topic 'cxx11-features' into next
    
    60c0d2dd Features: Add cxx_defaulted_move_initializers.
    c4e67235 Features: Add cxx_long_long_type.
    dcaafada Features: Add cxx_func_identifier.
    251a1f02 Features: Add cxx_local_type_template_args.
    53fe7773 Features: Add cxx_extended_friend_declarations.
    16603f7c Features: Add cxx_enum_forward_declarations.
    adf22f61 Features: Add cxx_default_function_template_args.
    7b3e8a05 Features: Add cxx_right_angle_brackets.
    9a49fd21 Features: Add cxx_decltype_incomplete_return_types.
    1889045c Features: Add cxx_sizeof_member.
    ab455eba Features: Add cxx_thread_local.
    300ce248 Features: Add cxx_inline_namespaces.
    f9d04a96 Features: Add cxx_variadic_macros.
    3d76656f Features: Add cxx_uniform_initialization.
    e74b216c Features: Add cxx_generalized_initializers.
    ff80c3b4 Features: Add cxx_attributes.
    ...


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=60c0d2dd812af663b2b009a253072dc481b604fe
commit 60c0d2dd812af663b2b009a253072dc481b604fe
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 11:22:49 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:58 2014 +0200

    Features: Add cxx_defaulted_move_initializers.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 5f578bb..6d34a2b 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -62,6 +62,11 @@ The features known to this version of CMake are:
 
   .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
 
+``cxx_defaulted_move_initializers``
+  Defaulted move initializers, as defined in N3053_.
+
+  .. _N3053: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
+
 ``cxx_delegating_constructors``
   Delegating constructors, as defined in N1986_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index c044f17..3f169d2 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -30,6 +30,7 @@ set(_cmake_feature_test_cxx_user_literals "${GNU47_CXX11}")
 # TODO: Should be supported by GNU 4.6
 set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_move_initializers "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_enum_forward_declarations "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_nullptr "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_range_for "${GNU46_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 12f770c..6ec40fb 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -52,6 +52,7 @@
   F(cxx_decltype_incomplete_return_types) \
   F(cxx_default_function_template_args) \
   F(cxx_defaulted_functions) \
+  F(cxx_defaulted_move_initializers) \
   F(cxx_delegating_constructors) \
   F(cxx_deleted_functions) \
   F(cxx_enum_forward_declarations) \
diff --git a/Tests/CompileFeatures/cxx_defaulted_move_initializers.cpp b/Tests/CompileFeatures/cxx_defaulted_move_initializers.cpp
new file mode 100644
index 0000000..14f9871
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_defaulted_move_initializers.cpp
@@ -0,0 +1,7 @@
+
+struct A
+{
+  A() = default;
+  A& operator=(A&&) = default;
+  A(A&&) = default;
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c4e672358c4945e78234b8c7075924c80750d61b
commit c4e672358c4945e78234b8c7075924c80750d61b
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 11:14:42 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:58 2014 +0200

    Features: Add cxx_long_long_type.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 32b47e4..5f578bb 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -127,6 +127,11 @@ The features known to this version of CMake are:
 
   .. _N2657: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
 
+``cxx_long_long_type``
+  ``long long`` type, as defined in N1811_.
+
+  .. _N1811: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
+
 ``cxx_noexcept``
   Exception specifications, as defined in N3050_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index d727cac..c044f17 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -64,6 +64,7 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_default_function_template_args "${GNU43_CXX11}")
+set(_cmake_feature_test_cxx_long_long_type "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_right_angle_brackets "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 508ace5..12f770c 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -65,6 +65,7 @@
   F(cxx_inline_namespaces) \
   F(cxx_lambdas) \
   F(cxx_local_type_template_args) \
+  F(cxx_long_long_type) \
   F(cxx_noexcept) \
   F(cxx_nonstatic_member_init) \
   F(cxx_nullptr) \
diff --git a/Tests/CompileFeatures/cxx_long_long_type.cpp b/Tests/CompileFeatures/cxx_long_long_type.cpp
new file mode 100644
index 0000000..670324c
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_long_long_type.cpp
@@ -0,0 +1,5 @@
+
+void someFunc()
+{
+  long long ll = 9223372036854775807LL;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dcaafada0e213ae74082be84812a38d7f2a4a860
commit dcaafada0e213ae74082be84812a38d7f2a4a860
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:52:38 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_func_identifier.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 1a76a3b..32b47e4 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -97,6 +97,11 @@ The features known to this version of CMake are:
 
   .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
 
+``cxx_func_identifier``
+  Predefined ``__func__`` identifier, as defined in N2340_.
+
+  .. _N2340: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
+
 ``cxx_generalized_initializers``
   Initializer lists, as defined in N2672_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 586ab4b..d727cac 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -70,5 +70,6 @@ set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
 # TODO: Should be supported since GNU 3.4?
 set(_cmake_feature_test_cxx_extern_templates "${_oldestSupported} && __cplusplus >= 201103L")
 # TODO: Should be supported forever?
+set(_cmake_feature_test_cxx_func_identifier "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_variadic_macros "${_oldestSupported} && __cplusplus >= 201103L")
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 7b960a3..508ace5 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -59,6 +59,7 @@
   F(cxx_extended_friend_declarations) \
   F(cxx_extern_templates) \
   F(cxx_final) \
+  F(cxx_func_identifier) \
   F(cxx_generalized_initializers) \
   F(cxx_inheriting_constructors) \
   F(cxx_inline_namespaces) \
diff --git a/Tests/CompileFeatures/cxx_func_identifier.cpp b/Tests/CompileFeatures/cxx_func_identifier.cpp
new file mode 100644
index 0000000..0c3595c
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_func_identifier.cpp
@@ -0,0 +1,6 @@
+
+void someFunc()
+{
+  bool b = sizeof(__func__);
+  (void)b;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=251a1f02a0ae7eb93690dd0daad8575a3c0451b3
commit 251a1f02a0ae7eb93690dd0daad8575a3c0451b3
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:38:50 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_local_type_template_args.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index fab8535..1a76a3b 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -117,6 +117,11 @@ The features known to this version of CMake are:
 
   .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
 
+``cxx_local_type_template_args``
+  Local and unnamed types as template arguments, as defined in N2657_.
+
+  .. _N2657: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
+
 ``cxx_noexcept``
   Exception specifications, as defined in N3050_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 506d718..586ab4b 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -38,6 +38,7 @@ set(_cmake_feature_test_cxx_unrestricted_unions "${GNU46_CXX11}")
 set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
 set(_cmake_feature_test_cxx_lambdas "${GNU45_CXX11}")
+set(_cmake_feature_test_cxx_local_type_template_args "${GNU45_CXX11}")
 set(_cmake_feature_test_cxx_raw_string_literals "${GNU45_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index f86a999..7b960a3 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -63,6 +63,7 @@
   F(cxx_inheriting_constructors) \
   F(cxx_inline_namespaces) \
   F(cxx_lambdas) \
+  F(cxx_local_type_template_args) \
   F(cxx_noexcept) \
   F(cxx_nonstatic_member_init) \
   F(cxx_nullptr) \
diff --git a/Tests/CompileFeatures/cxx_local_type_template_args.cpp b/Tests/CompileFeatures/cxx_local_type_template_args.cpp
new file mode 100644
index 0000000..802ea7a
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_local_type_template_args.cpp
@@ -0,0 +1,21 @@
+
+template <typename T>
+class X { };
+template <typename T>
+void f(T t) { }
+struct {} unnamed_obj;
+void f() {
+  struct A { };
+  enum { e1 };
+  typedef struct {} B;
+  B b;
+  X<A> x1;
+  X<A*> x2;
+  X<B> x3;
+  f(e1);
+  f(unnamed_obj);
+  f(b);
+  (void)x1;
+  (void)x2;
+  (void)x3;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=53fe7773e6335b71161310a2c948bc99145ee59e
commit 53fe7773e6335b71161310a2c948bc99145ee59e
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:37:52 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_extended_friend_declarations.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 5ac646c..fab8535 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -82,6 +82,11 @@ The features known to this version of CMake are:
 
   .. _N2437: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
 
+``cxx_extended_friend_declarations``
+  Extended friend declarations, as defined in N1791_.
+
+  .. _N1791: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
+
 ``cxx_extern_templates``
   Extern templates, as defined in N1987_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index d1bd4a0..506d718 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -16,6 +16,7 @@ set(_cmake_feature_test_cxx_thread_local "${GNU48_CXX11}")
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_alias_templates "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_noexcept "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_nonstatic_member_init "${GNU47_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 7c5ec81..f86a999 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -56,6 +56,7 @@
   F(cxx_deleted_functions) \
   F(cxx_enum_forward_declarations) \
   F(cxx_explicit_conversions) \
+  F(cxx_extended_friend_declarations) \
   F(cxx_extern_templates) \
   F(cxx_final) \
   F(cxx_generalized_initializers) \
diff --git a/Tests/CompileFeatures/cxx_extended_friend_declarations.cpp b/Tests/CompileFeatures/cxx_extended_friend_declarations.cpp
new file mode 100644
index 0000000..631c699
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_extended_friend_declarations.cpp
@@ -0,0 +1,25 @@
+
+template <typename T>
+struct B
+{
+  B() : m_i(42) {}
+private:
+  int m_i;
+  friend T;
+};
+
+struct A
+{
+  template<typename T>
+  int getBValue(B<T> b)
+  {
+    return b.m_i;
+  }
+};
+
+void someFunc()
+{
+  A a;
+  B<A> b;
+  a.getBValue(b);
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=16603f7cdb76ad4f9377d583b5234d92f85dd22d
commit 16603f7cdb76ad4f9377d583b5234d92f85dd22d
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:37:08 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_enum_forward_declarations.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 1f9cbbd..5ac646c 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -72,6 +72,11 @@ The features known to this version of CMake are:
 
   .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
 
+``cxx_enum_forward_declarations``
+  Enum forward declarations, as defined in N2764_.
+
+  .. _N2764: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
+
 ``cxx_explicit_conversions``
   Explicit conversion operators, as defined in N2437_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 94a31c8..d1bd4a0 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -29,6 +29,7 @@ set(_cmake_feature_test_cxx_user_literals "${GNU47_CXX11}")
 # TODO: Should be supported by GNU 4.6
 set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_nullptr "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_range_for "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_unrestricted_unions "${GNU46_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 577aa37..7c5ec81 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -54,6 +54,7 @@
   F(cxx_defaulted_functions) \
   F(cxx_delegating_constructors) \
   F(cxx_deleted_functions) \
+  F(cxx_enum_forward_declarations) \
   F(cxx_explicit_conversions) \
   F(cxx_extern_templates) \
   F(cxx_final) \
diff --git a/Tests/CompileFeatures/cxx_enum_forward_declarations.cpp b/Tests/CompileFeatures/cxx_enum_forward_declarations.cpp
new file mode 100644
index 0000000..a7e1445
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_enum_forward_declarations.cpp
@@ -0,0 +1,8 @@
+
+enum SomeEnum : short;
+
+void someFunc()
+{
+  SomeEnum value;
+  int i = value;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=adf22f611e2e4213df31cc7e1d8c1513847b72ff
commit adf22f611e2e4213df31cc7e1d8c1513847b72ff
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:41:01 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_default_function_template_args.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 710fdcf..1f9cbbd 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -52,6 +52,11 @@ The features known to this version of CMake are:
 
   .. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
 
+``cxx_default_function_template_args``
+  Default template arguments for function templates, as defined in DR226_
+
+  .. _DR226: http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
+
 ``cxx_defaulted_functions``
   Defaulted functions, as defined in N2346_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index be6fed4..94a31c8 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -60,6 +60,7 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: Should be supported by GNU 4.3
 set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
+set(_cmake_feature_test_cxx_default_function_template_args "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_right_angle_brackets "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 61549ae..577aa37 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -50,6 +50,7 @@
   F(cxx_constexpr) \
   F(cxx_decltype) \
   F(cxx_decltype_incomplete_return_types) \
+  F(cxx_default_function_template_args) \
   F(cxx_defaulted_functions) \
   F(cxx_delegating_constructors) \
   F(cxx_deleted_functions) \
diff --git a/Tests/CompileFeatures/cxx_default_function_template_args.cpp b/Tests/CompileFeatures/cxx_default_function_template_args.cpp
new file mode 100644
index 0000000..3d14c52
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_default_function_template_args.cpp
@@ -0,0 +1,12 @@
+
+template<typename T = int>
+int someFunc()
+{
+  T t = 0;
+  return t;
+}
+
+void otherFunc()
+{
+  someFunc();
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7b3e8a05349e13ee300980c1a4789cc9175a6c42
commit 7b3e8a05349e13ee300980c1a4789cc9175a6c42
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:17:20 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_right_angle_brackets.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 437d000..710fdcf 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -137,6 +137,11 @@ The features known to this version of CMake are:
 
   .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
 
+``cxx_right_angle_brackets``
+  Right angle bracket parsing, as defined in N1757_.
+
+  .. _N1757: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
+
 ``cxx_rvalue_references``
   R-value references, as defined in N2118_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index e93888c..be6fed4 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -60,6 +60,7 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: Should be supported by GNU 4.3
 set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
 # TODO: Should be supported since GNU 3.4?
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 8ae07b1..61549ae 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -67,6 +67,7 @@
   F(cxx_range_for) \
   F(cxx_raw_string_literals) \
   F(cxx_reference_qualified_functions) \
+  F(cxx_right_angle_brackets) \
   F(cxx_rvalue_references) \
   F(cxx_sizeof_member) \
   F(cxx_static_assert) \
diff --git a/Tests/CompileFeatures/cxx_right_angle_brackets.cpp b/Tests/CompileFeatures/cxx_right_angle_brackets.cpp
new file mode 100644
index 0000000..2713fd8
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_right_angle_brackets.cpp
@@ -0,0 +1,12 @@
+
+template<typename T>
+struct A
+{
+  typedef T Result;
+};
+
+void someFunc()
+{
+  A<A<int>> object;
+  (void)object;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9a49fd21bedacdda51ecfa82a15a0e52dd64948f
commit 9a49fd21bedacdda51ecfa82a15a0e52dd64948f
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:17:15 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_decltype_incomplete_return_types.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index a16dced..437d000 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -42,6 +42,11 @@ The features known to this version of CMake are:
 
   .. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
 
+``cxx_decltype_incomplete_return_types``
+  Decltype on incomplete return types, as defined in N3276_.
+
+  .. _N3276 : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
+
 ``cxx_decltype``
   Decltype, as defined in N2343_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index a98ae3a..e93888c 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -3,8 +3,9 @@
 
 set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
 # Introduced in GCC 4.8.1
-set(_cmake_feature_test_cxx_reference_qualified_functions
-  "((__GNUC__ * 100 + __GNUC_MINOR__) > 408 || __GNUC_PATCHLEVEL__ >= 1) && __cplusplus >= 201103L")
+set(GNU481_CXX11 "((__GNUC__ * 100 + __GNUC_MINOR__) > 408 || __GNUC_PATCHLEVEL__ >= 1) && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_decltype_incomplete_return_types "${GNU481_CXX11}")
+set(_cmake_feature_test_cxx_reference_qualified_functions "${GNU481_CXX11}")
 set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_alignas "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_alignof "${GNU48_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 58c874d..8ae07b1 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -49,6 +49,7 @@
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_decltype) \
+  F(cxx_decltype_incomplete_return_types) \
   F(cxx_defaulted_functions) \
   F(cxx_delegating_constructors) \
   F(cxx_deleted_functions) \
diff --git a/Tests/CompileFeatures/cxx_decltype_incomplete_return_types.cpp b/Tests/CompileFeatures/cxx_decltype_incomplete_return_types.cpp
new file mode 100644
index 0000000..109d038
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_decltype_incomplete_return_types.cpp
@@ -0,0 +1,14 @@
+
+template<class T>
+struct A
+{
+  ~A() = delete;
+};
+
+template<class T> auto h() -> A<T>;
+template<class T> auto i(T) -> T;
+template<class T> auto f(T) -> decltype(i(h<T>()));
+template<class T> auto f(T) -> void;
+auto g() -> void {
+  f(42);
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1889045ca672e295c18203401c27a9e62ff45424
commit 1889045ca672e295c18203401c27a9e62ff45424
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:09:37 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_sizeof_member.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index b544d7e..a16dced 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -137,6 +137,11 @@ The features known to this version of CMake are:
 
   .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
 
+``cxx_sizeof_member``
+  Size of non-static data members, as defined in N2253_.
+
+  .. _N2253: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 1f56ace..a98ae3a 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -43,6 +43,7 @@ set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_deleted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_generalized_initializers "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_inline_namespaces "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_sizeof_member "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_unicode_literals "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 6d2a576..58c874d 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -67,6 +67,7 @@
   F(cxx_raw_string_literals) \
   F(cxx_reference_qualified_functions) \
   F(cxx_rvalue_references) \
+  F(cxx_sizeof_member) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_thread_local) \
diff --git a/Tests/CompileFeatures/cxx_sizeof_member.cpp b/Tests/CompileFeatures/cxx_sizeof_member.cpp
new file mode 100644
index 0000000..ae143d2
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_sizeof_member.cpp
@@ -0,0 +1,10 @@
+
+struct A
+{
+  int m_i;
+};
+
+int someFunc()
+{
+  return sizeof(A::m_i) > 0 ? 1 : 2;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ab455ebafd55653f87168d9e6c32cfc15403a973
commit ab455ebafd55653f87168d9e6c32cfc15403a973
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:10:54 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_thread_local.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index f419366..b544d7e 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -147,6 +147,11 @@ The features known to this version of CMake are:
 
   .. _N2347: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
 
+``cxx_thread_local``
+  Thread-local variables, as defined in N2659_.
+
+  .. _N2659: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
+
 ``cxx_trailing_return_types``
   Automatic function return type, as defined in N2541_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 73cd145..1f56ace 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -10,6 +10,7 @@ set(_cmake_feature_test_cxx_alignas "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_alignof "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_attributes "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
+set(_cmake_feature_test_cxx_thread_local "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_alias_templates "${GNU47_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 2f2747d..6d2a576 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -69,6 +69,7 @@
   F(cxx_rvalue_references) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
+  F(cxx_thread_local) \
   F(cxx_trailing_return_types) \
   F(cxx_unicode_literals) \
   F(cxx_uniform_initialization) \
diff --git a/Tests/CompileFeatures/cxx_thread_local.cpp b/Tests/CompileFeatures/cxx_thread_local.cpp
new file mode 100644
index 0000000..1fb27e2
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_thread_local.cpp
@@ -0,0 +1,2 @@
+
+thread_local unsigned int rage = 1;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=300ce2481eae64f44ca4a4bec4f975db4f3e16c8
commit 300ce2481eae64f44ca4a4bec4f975db4f3e16c8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:07:19 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_inline_namespaces.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 7b94560..f419366 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -87,6 +87,11 @@ The features known to this version of CMake are:
 
   .. _N2540: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
 
+``cxx_inline_namespaces``
+  Inline namespaces, as defined in N2535_.
+
+  .. _N2535: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
+
 ``cxx_lambdas``
   Lambda functions, as defined in N2927_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index df34b7a..73cd145 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -41,6 +41,7 @@ set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_deleted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_generalized_initializers "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_inline_namespaces "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_unicode_literals "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index a5a76c8..2f2747d 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -57,6 +57,7 @@
   F(cxx_final) \
   F(cxx_generalized_initializers) \
   F(cxx_inheriting_constructors) \
+  F(cxx_inline_namespaces) \
   F(cxx_lambdas) \
   F(cxx_noexcept) \
   F(cxx_nonstatic_member_init) \
diff --git a/Tests/CompileFeatures/cxx_inline_namespaces.cpp b/Tests/CompileFeatures/cxx_inline_namespaces.cpp
new file mode 100644
index 0000000..59fa9c8
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_inline_namespaces.cpp
@@ -0,0 +1,26 @@
+namespace Lib
+{
+inline namespace Lib_1
+{
+  template <typename T> class A;
+}
+
+template <typename T> void g(T);
+}
+
+struct MyClass {
+
+};
+namespace Lib
+{
+template<>
+class A<MyClass> {
+
+};
+}
+
+void someFunc()
+{
+  Lib::A<MyClass> a;
+  g(a);  // ok, Lib is an associated namespace of A
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f9d04a96b57ad5f68259b978983289043ae22716
commit f9d04a96b57ad5f68259b978983289043ae22716
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 15:05:10 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:57 2014 +0200

    Features: Add cxx_variadic_macros.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 55521d9..7b94560 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -167,6 +167,11 @@ The features known to this version of CMake are:
 
   .. _N2765: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
 
+``cxx_variadic_macros``
+  Variadic macros, as defined in N1653_.
+
+  .. _N1653: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
+
 ``cxx_variadic_templates``
   Variadic templates, as defined in N2242_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index a3b4339..df34b7a 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -60,4 +60,6 @@ set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
 # TODO: Should be supported since GNU 3.4?
 set(_cmake_feature_test_cxx_extern_templates "${_oldestSupported} && __cplusplus >= 201103L")
+# TODO: Should be supported forever?
+set(_cmake_feature_test_cxx_variadic_macros "${_oldestSupported} && __cplusplus >= 201103L")
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 65f9594..a5a76c8 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -73,6 +73,7 @@
   F(cxx_uniform_initialization) \
   F(cxx_unrestricted_unions) \
   F(cxx_user_literals) \
+  F(cxx_variadic_macros) \
   F(cxx_variadic_templates)
 
 class cmMakefile::Internals
diff --git a/Tests/CompileFeatures/cxx_variadic_macros.cpp b/Tests/CompileFeatures/cxx_variadic_macros.cpp
new file mode 100644
index 0000000..4d007a5
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_variadic_macros.cpp
@@ -0,0 +1,12 @@
+
+int someFunc(int, char, int)
+{
+  return 0;
+}
+
+#define FUNC_WRAPPER(...) someFunc(__VA_ARGS__)
+
+void otherFunc()
+{
+  FUNC_WRAPPER(42, 'a', 7);
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3d76656fb3db56f364bbf7a7655ab1433b72d284
commit 3d76656fb3db56f364bbf7a7655ab1433b72d284
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 14:53:25 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_uniform_initialization.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 9329968..55521d9 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -152,6 +152,11 @@ The features known to this version of CMake are:
 
   .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
 
+``cxx_uniform_initialization``
+  Uniform intialization, as defined in N2640_.
+
+  .. _N2640: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf
+
 ``cxx_unrestricted_unions``
   Unrestricted unions, as defined in N2544_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index fcdffac..a3b4339 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -44,6 +44,7 @@ set(_cmake_feature_test_cxx_generalized_initializers "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_unicode_literals "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_uniform_initialization "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: If features are ever recorded for GNU 4.3, there should possibly
 # be a new feature added like cxx_variadic_template_template_parameters,
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index c1d276e..65f9594 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -70,6 +70,7 @@
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
   F(cxx_unicode_literals) \
+  F(cxx_uniform_initialization) \
   F(cxx_unrestricted_unions) \
   F(cxx_user_literals) \
   F(cxx_variadic_templates)
diff --git a/Tests/CompileFeatures/cxx_uniform_initialization.cpp b/Tests/CompileFeatures/cxx_uniform_initialization.cpp
new file mode 100644
index 0000000..82c76e2
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_uniform_initialization.cpp
@@ -0,0 +1,9 @@
+struct A {};
+struct B {
+  B(A) {}
+};
+
+void Func()
+{
+  B b{A{}};
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e74b216c90d33548e7b248276346a5d00eff5ee3
commit e74b216c90d33548e7b248276346a5d00eff5ee3
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 14:52:48 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_generalized_initializers.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 05fc1bd..9329968 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -77,6 +77,11 @@ The features known to this version of CMake are:
 
   .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
 
+``cxx_generalized_initializers``
+  Initializer lists, as defined in N2672_.
+
+  .. _N2672: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
+
 ``cxx_inheriting_constructors``
   Inheriting constructors, as defined in N2540_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index be3c27e..fcdffac 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -40,6 +40,7 @@ set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_deleted_functions "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_generalized_initializers "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_unicode_literals "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 63c00cc..c1d276e 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -55,6 +55,7 @@
   F(cxx_explicit_conversions) \
   F(cxx_extern_templates) \
   F(cxx_final) \
+  F(cxx_generalized_initializers) \
   F(cxx_inheriting_constructors) \
   F(cxx_lambdas) \
   F(cxx_noexcept) \
diff --git a/Tests/CompileFeatures/cxx_generalized_initializers.cpp b/Tests/CompileFeatures/cxx_generalized_initializers.cpp
new file mode 100644
index 0000000..8013ef5
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_generalized_initializers.cpp
@@ -0,0 +1,23 @@
+
+// Dummy implementation. Test only the compiler feature.
+namespace std {
+  typedef decltype(sizeof(int)) size_t;
+  template <class _E>
+  class initializer_list
+  {
+    const _E* __begin_;
+    size_t    __size_;
+
+  };
+}
+
+template <typename T>
+struct A
+{
+  A(std::initializer_list<T>) {}
+};
+
+void someFunc()
+{
+  A<int> as = { 1, 2, 3, 4 };
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ff80c3b4201918c2f30241972d3553a99571eed8
commit ff80c3b4201918c2f30241972d3553a99571eed8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 14:10:17 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_attributes.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 7e10853..05fc1bd 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -27,6 +27,11 @@ The features known to this version of CMake are:
 
   .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
 
+``cxx_attributes``
+  Generic attributes, as defined in N2761_.
+
+  .. _N2761: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
+
 ``cxx_auto_type``
   Automatic type deduction, as defined in N1984_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 26b7ff6..be3c27e 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -8,6 +8,7 @@ set(_cmake_feature_test_cxx_reference_qualified_functions
 set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_alignas "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_alignof "${GNU48_CXX11}")
+set(_cmake_feature_test_cxx_attributes "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 2b76d45..63c00cc 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -45,6 +45,7 @@
   F(cxx_alias_templates) \
   F(cxx_alignas) \
   F(cxx_alignof) \
+  F(cxx_attributes) \
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_decltype) \
diff --git a/Tests/CompileFeatures/cxx_attributes.cpp b/Tests/CompileFeatures/cxx_attributes.cpp
new file mode 100644
index 0000000..a3c89ea
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_attributes.cpp
@@ -0,0 +1,2 @@
+
+void unusedFunc [[noreturn]] () { throw 1; }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7605fee593a00e0345a4842241ff1f2a043b7ebf
commit 7605fee593a00e0345a4842241ff1f2a043b7ebf
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 13:55:27 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_alignof.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 043863f..7e10853 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -22,6 +22,11 @@ The features known to this version of CMake are:
 
   .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
 
+``cxx_alignof``
+  Alignment control ``alignof``, as defined in N2341_.
+
+  .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
 ``cxx_auto_type``
   Automatic type deduction, as defined in N1984_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 86d5557..26b7ff6 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -7,6 +7,7 @@ set(_cmake_feature_test_cxx_reference_qualified_functions
   "((__GNUC__ * 100 + __GNUC_MINOR__) > 408 || __GNUC_PATCHLEVEL__ >= 1) && __cplusplus >= 201103L")
 set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_alignas "${GNU48_CXX11}")
+set(_cmake_feature_test_cxx_alignof "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index b1dd721..2b76d45 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -44,6 +44,7 @@
 #define FOR_EACH_CXX_FEATURE(F) \
   F(cxx_alias_templates) \
   F(cxx_alignas) \
+  F(cxx_alignof) \
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_decltype) \
diff --git a/Tests/CompileFeatures/cxx_alignof.cpp b/Tests/CompileFeatures/cxx_alignof.cpp
new file mode 100644
index 0000000..63b14fe
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_alignof.cpp
@@ -0,0 +1,5 @@
+
+int someFunc()
+{
+  return alignof(int);
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e7d6e1f44f0f3bcf7ded76ec8d649b7a0552778c
commit e7d6e1f44f0f3bcf7ded76ec8d649b7a0552778c
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 13:54:08 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_alignas.
    
    cxx_alignof will be a separate feature known to CMake, because
    both can be implemented with separate backward compatibility
    versions.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 6c4bc15..043863f 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -17,6 +17,11 @@ The features known to this version of CMake are:
 
   .. _N2258: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
 
+``cxx_alignas``
+  Alignment control ``alignas``, as defined in N2341_.
+
+  .. _N2341: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
 ``cxx_auto_type``
   Automatic type deduction, as defined in N1984_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index ee7f2e4..86d5557 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -6,6 +6,7 @@ set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
 set(_cmake_feature_test_cxx_reference_qualified_functions
   "((__GNUC__ * 100 + __GNUC_MINOR__) > 408 || __GNUC_PATCHLEVEL__ >= 1) && __cplusplus >= 201103L")
 set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_alignas "${GNU48_CXX11}")
 set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 1803afe..b1dd721 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -43,6 +43,7 @@
 
 #define FOR_EACH_CXX_FEATURE(F) \
   F(cxx_alias_templates) \
+  F(cxx_alignas) \
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_decltype) \
diff --git a/Tests/CompileFeatures/cxx_alignas.cpp b/Tests/CompileFeatures/cxx_alignas.cpp
new file mode 100644
index 0000000..35b7c82
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_alignas.cpp
@@ -0,0 +1,4 @@
+
+struct S1 {
+  alignas(8) int n;
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=32c2acd65c3d48433a50a6c2f9fc00c2a1a699f4
commit 32c2acd65c3d48433a50a6c2f9fc00c2a1a699f4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 13:11:37 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_extern_templates.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 0a2f23c..6c4bc15 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -52,6 +52,11 @@ The features known to this version of CMake are:
 
   .. _N2437: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
 
+``cxx_extern_templates``
+  Extern templates, as defined in N1987_.
+
+  .. _N1987: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
+
 ``cxx_final``
   Override control ``final`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index bd3e96e..ee7f2e4 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -53,4 +53,6 @@ set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
+# TODO: Should be supported since GNU 3.4?
+set(_cmake_feature_test_cxx_extern_templates "${_oldestSupported} && __cplusplus >= 201103L")
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index aa9b7c7..1803afe 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -50,6 +50,7 @@
   F(cxx_delegating_constructors) \
   F(cxx_deleted_functions) \
   F(cxx_explicit_conversions) \
+  F(cxx_extern_templates) \
   F(cxx_final) \
   F(cxx_inheriting_constructors) \
   F(cxx_lambdas) \
diff --git a/Tests/CompileFeatures/cxx_extern_templates.cpp b/Tests/CompileFeatures/cxx_extern_templates.cpp
new file mode 100644
index 0000000..9fa4aa4
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_extern_templates.cpp
@@ -0,0 +1,12 @@
+
+template<typename T>
+void someFunc()
+{
+}
+
+extern template void someFunc<int>();
+
+void otherFunc()
+{
+  someFunc<int>();
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9064f78b0c07a79f25ee04cf8afaf726d18ec722
commit 9064f78b0c07a79f25ee04cf8afaf726d18ec722
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 11:06:02 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_unrestricted_unions.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 07defb3..0a2f23c 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -127,6 +127,11 @@ The features known to this version of CMake are:
 
   .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
 
+``cxx_unrestricted_unions``
+  Unrestricted unions, as defined in N2544_.
+
+  .. _N2544: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
+
 ``cxx_user_literals``
   User-defined literals, as defined in N2765_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 44af004..bd3e96e 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -26,6 +26,7 @@ set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_nullptr "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_range_for "${GNU46_CXX11}")
+set(_cmake_feature_test_cxx_unrestricted_unions "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.5
 set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 993dcce..aa9b7c7 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -65,6 +65,7 @@
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
   F(cxx_unicode_literals) \
+  F(cxx_unrestricted_unions) \
   F(cxx_user_literals) \
   F(cxx_variadic_templates)
 
diff --git a/Tests/CompileFeatures/cxx_unrestricted_unions.cpp b/Tests/CompileFeatures/cxx_unrestricted_unions.cpp
new file mode 100644
index 0000000..698fd61
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_unrestricted_unions.cpp
@@ -0,0 +1,11 @@
+
+struct point {
+  point() {}
+  point(int x, int y) : x_(x), y_(y) {}
+  int x_, y_;
+};
+union u {
+  point p_;
+  int i_;
+  const char* s_;
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3322b393a265747ae7c187d426f7f1676b478de4
commit 3322b393a265747ae7c187d426f7f1676b478de4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 10:59:22 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_unicode_literals.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 1ea3b68..07defb3 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -122,6 +122,11 @@ The features known to this version of CMake are:
 
   .. _N2541: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
 
+``cxx_unicode_literals``
+  Unicode string literals, as defined in N2442_.
+
+  .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
 ``cxx_user_literals``
   User-defined literals, as defined in N2765_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 12d2adc..44af004 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -38,6 +38,7 @@ set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_deleted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_unicode_literals "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: If features are ever recorded for GNU 4.3, there should possibly
 # be a new feature added like cxx_variadic_template_template_parameters,
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index bcd192d..993dcce 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -64,6 +64,7 @@
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
+  F(cxx_unicode_literals) \
   F(cxx_user_literals) \
   F(cxx_variadic_templates)
 
diff --git a/Tests/CompileFeatures/cxx_unicode_literals.cpp b/Tests/CompileFeatures/cxx_unicode_literals.cpp
new file mode 100644
index 0000000..a7b7df0
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_unicode_literals.cpp
@@ -0,0 +1,3 @@
+
+const char16_t lit_16[] = u"\u00DA";
+const char32_t lit_32[] = U"\u00DA";

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=04c5b99f38aef9a5c9627c35659891aecd8ab41e
commit 04c5b99f38aef9a5c9627c35659891aecd8ab41e
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 10:56:09 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_user_literals.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index fbc45c2..1ea3b68 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -122,6 +122,11 @@ The features known to this version of CMake are:
 
   .. _N2541: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
 
+``cxx_user_literals``
+  User-defined literals, as defined in N2765_.
+
+  .. _N2765: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
+
 ``cxx_variadic_templates``
   Variadic templates, as defined in N2242_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 5f8d952..12d2adc 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -15,6 +15,7 @@ set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_noexcept "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_nonstatic_member_init "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
+set(_cmake_feature_test_cxx_user_literals "${GNU47_CXX11}")
 # NOTE: C++11 was ratified in September 2011. GNU 4.7 is the first minor
 # release following that (March 2012), and the first minor release to
 # support -std=c++11. Prior to that, support for C++11 features is technically
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index fc89d8e..bcd192d 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -64,6 +64,7 @@
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
+  F(cxx_user_literals) \
   F(cxx_variadic_templates)
 
 class cmMakefile::Internals
diff --git a/Tests/CompileFeatures/cxx_user_literals.cpp b/Tests/CompileFeatures/cxx_user_literals.cpp
new file mode 100644
index 0000000..9e5a588
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_user_literals.cpp
@@ -0,0 +1,7 @@
+
+long double operator "" _meters(long double);
+
+void someFunc()
+{
+  long double i = 1.2_meters;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e1e292cd069bf811b0635088539aace0f0eeaf68
commit e1e292cd069bf811b0635088539aace0f0eeaf68
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 10:50:41 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:56 2014 +0200

    Features: Add cxx_alias_templates.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index bdcd46b..fbc45c2 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -12,6 +12,11 @@ command.
 
 The features known to this version of CMake are:
 
+``cxx_alias_templates``
+  Template aliases, as defined in N2258_.
+
+  .. _N2258: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
 ``cxx_auto_type``
   Automatic type deduction, as defined in N1984_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 5bf3420..5f8d952 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -9,6 +9,7 @@ set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 2011
 set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_alias_templates "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_noexcept "${GNU47_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index d632db6..fc89d8e 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -42,6 +42,7 @@
 #include <assert.h>
 
 #define FOR_EACH_CXX_FEATURE(F) \
+  F(cxx_alias_templates) \
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_decltype) \
diff --git a/Tests/CompileFeatures/cxx_alias_templates.cpp b/Tests/CompileFeatures/cxx_alias_templates.cpp
new file mode 100644
index 0000000..a47e27d
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_alias_templates.cpp
@@ -0,0 +1,11 @@
+
+template <typename T1, typename T2>
+struct A
+{
+  typedef T1 MyT1;
+  using MyT2 = T2;
+};
+
+using B = A<int, char>;
+template<typename T>
+using C = A<int, T>;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3300f783104b89c00bde1904e5528e9564c479a2
commit 3300f783104b89c00bde1904e5528e9564c479a2
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 09:39:40 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_rvalue_references.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 13ead96..bdcd46b 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -97,6 +97,11 @@ The features known to this version of CMake are:
 
   .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
 
+``cxx_rvalue_references``
+  R-value references, as defined in N2118_.
+
+  .. _N2118: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index b9ed092..5bf3420 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -47,5 +47,6 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: Should be supported by GNU 4.3
 set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
+set(_cmake_feature_test_cxx_rvalue_references "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 0cca2d6..d632db6 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -59,6 +59,7 @@
   F(cxx_range_for) \
   F(cxx_raw_string_literals) \
   F(cxx_reference_qualified_functions) \
+  F(cxx_rvalue_references) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
diff --git a/Tests/CompileFeatures/cxx_rvalue_references.cpp b/Tests/CompileFeatures/cxx_rvalue_references.cpp
new file mode 100644
index 0000000..787026a
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_rvalue_references.cpp
@@ -0,0 +1,5 @@
+
+void someFunc(int&&)
+{
+
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b1c5bd531417b74ddb2cb4365c49f0723c7a8e75
commit b1c5bd531417b74ddb2cb4365c49f0723c7a8e75
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 09:25:46 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_reference_qualified_functions.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index e482fe3..13ead96 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -92,6 +92,11 @@ The features known to this version of CMake are:
 
   .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
 
+``cxx_reference_qualified_functions``
+  Reference qualified functions, as defined in N2439_.
+
+  .. _N2439: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 5c1f2c8..b9ed092 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -2,6 +2,9 @@
 # Reference: http://gcc.gnu.org/projects/cxx0x.html
 
 set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
+# Introduced in GCC 4.8.1
+set(_cmake_feature_test_cxx_reference_qualified_functions
+  "((__GNUC__ * 100 + __GNUC_MINOR__) > 408 || __GNUC_PATCHLEVEL__ >= 1) && __cplusplus >= 201103L")
 set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 2a10f1e..0cca2d6 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -58,6 +58,7 @@
   F(cxx_override) \
   F(cxx_range_for) \
   F(cxx_raw_string_literals) \
+  F(cxx_reference_qualified_functions) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
diff --git a/Tests/CompileFeatures/cxx_reference_qualified_functions.cpp b/Tests/CompileFeatures/cxx_reference_qualified_functions.cpp
new file mode 100644
index 0000000..83a2361
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_reference_qualified_functions.cpp
@@ -0,0 +1,11 @@
+
+struct test{
+  void f() & { }
+  void f() && { }
+};
+
+void someFunc(){
+  test t;
+  t.f(); // lvalue
+  test().f(); // rvalue
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ea9c445f066589067992694cb6abc0d70ad97dd7
commit ea9c445f066589067992694cb6abc0d70ad97dd7
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 09:15:18 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_raw_string_literals.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index b8af28f..e482fe3 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -87,6 +87,11 @@ The features known to this version of CMake are:
 
   .. _N2930: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
 
+``cxx_raw_string_literals``
+  Raw string literals, as defined in N2442_.
+
+  .. _N2442: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index c48fca8..5c1f2c8 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -25,6 +25,7 @@ set(_cmake_feature_test_cxx_range_for "${GNU46_CXX11}")
 set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
 set(_cmake_feature_test_cxx_lambdas "${GNU45_CXX11}")
+set(_cmake_feature_test_cxx_raw_string_literals "${GNU45_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index b1f6cd0..2a10f1e 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -57,6 +57,7 @@
   F(cxx_nullptr) \
   F(cxx_override) \
   F(cxx_range_for) \
+  F(cxx_raw_string_literals) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
diff --git a/Tests/CompileFeatures/cxx_raw_string_literals.cpp b/Tests/CompileFeatures/cxx_raw_string_literals.cpp
new file mode 100644
index 0000000..ea4d231
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_raw_string_literals.cpp
@@ -0,0 +1,7 @@
+
+void someFunc()
+{
+const char p[] = R"(a\
+b
+c)";
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=735adf2c94c1ee0cca710c6eb0bade2b84c461de
commit 735adf2c94c1ee0cca710c6eb0bade2b84c461de
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:40:06 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_range_for.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 8924a00..b8af28f 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -82,6 +82,11 @@ The features known to this version of CMake are:
 
   .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
 
+``cxx_range_for``
+  Range-based for, as defined in N2930_.
+
+  .. _N2930: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 4539fd6..c48fca8 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -20,6 +20,7 @@ set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
 set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 set(_cmake_feature_test_cxx_nullptr "${GNU46_CXX11}")
+set(_cmake_feature_test_cxx_range_for "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.5
 set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index c56627f..b1f6cd0 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -56,6 +56,7 @@
   F(cxx_nonstatic_member_init) \
   F(cxx_nullptr) \
   F(cxx_override) \
+  F(cxx_range_for) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
diff --git a/Tests/CompileFeatures/cxx_range_for.cpp b/Tests/CompileFeatures/cxx_range_for.cpp
new file mode 100644
index 0000000..892109e
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_range_for.cpp
@@ -0,0 +1,10 @@
+
+void someFunc()
+{
+  int accumulated = 0;
+  int numbers[] = { 1, 2, 5 };
+  for (int i : numbers)
+    {
+    accumulated += i;
+    }
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0fa9bbf1fa5278d965cbbb7de82f56ef42789fe8
commit 0fa9bbf1fa5278d965cbbb7de82f56ef42789fe8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:34:47 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_nullptr.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index ee383ef..8924a00 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -72,6 +72,11 @@ The features known to this version of CMake are:
 
   .. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
 
+``cxx_nullptr``
+  Null pointer, as defined in N2431_.
+
+  .. _N2431: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
+
 ``cxx_override``
   Override control ``override`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index c7de17b..4539fd6 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -19,6 +19,7 @@ set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
 # TODO: Should be supported by GNU 4.6
 set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
+set(_cmake_feature_test_cxx_nullptr "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.5
 set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 90187fd..c56627f 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -54,6 +54,7 @@
   F(cxx_lambdas) \
   F(cxx_noexcept) \
   F(cxx_nonstatic_member_init) \
+  F(cxx_nullptr) \
   F(cxx_override) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
diff --git a/Tests/CompileFeatures/cxx_nullptr.cpp b/Tests/CompileFeatures/cxx_nullptr.cpp
new file mode 100644
index 0000000..96307df
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_nullptr.cpp
@@ -0,0 +1,10 @@
+
+void someFunc(int*)
+{
+
+}
+
+void otherFunc()
+{
+  someFunc(nullptr);
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8149fc909fb2c26235fea8999ea9396d7b45fba7
commit 8149fc909fb2c26235fea8999ea9396d7b45fba7
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:32:06 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_noexcept.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 373b67f..ee383ef 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -62,6 +62,11 @@ The features known to this version of CMake are:
 
   .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
 
+``cxx_noexcept``
+  Exception specifications, as defined in N3050_.
+
+  .. _N3050: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
+
 ``cxx_nonstatic_member_init``
   Non-static data member initialization, as defined in N2756.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index b291524..c7de17b 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -8,6 +8,7 @@ set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
+set(_cmake_feature_test_cxx_noexcept "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_nonstatic_member_init "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
 # NOTE: C++11 was ratified in September 2011. GNU 4.7 is the first minor
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 2a55fde..90187fd 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -52,6 +52,7 @@
   F(cxx_final) \
   F(cxx_inheriting_constructors) \
   F(cxx_lambdas) \
+  F(cxx_noexcept) \
   F(cxx_nonstatic_member_init) \
   F(cxx_override) \
   F(cxx_static_assert) \
diff --git a/Tests/CompileFeatures/cxx_noexcept.cpp b/Tests/CompileFeatures/cxx_noexcept.cpp
new file mode 100644
index 0000000..a3c05b8
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_noexcept.cpp
@@ -0,0 +1,5 @@
+
+void someFunc() noexcept
+{
+
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bd2a025eb0ec26dc32d6eb4c9c3da22f68608b27
commit bd2a025eb0ec26dc32d6eb4c9c3da22f68608b27
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:29:17 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_nonstatic_member_init.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 9441e57..373b67f 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -62,6 +62,11 @@ The features known to this version of CMake are:
 
   .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
 
+``cxx_nonstatic_member_init``
+  Non-static data member initialization, as defined in N2756.
+
+  .. _N2756: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2756.htm
+
 ``cxx_override``
   Override control ``override`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index f182cea..b291524 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -8,6 +8,7 @@ set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
+set(_cmake_feature_test_cxx_nonstatic_member_init "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
 # NOTE: C++11 was ratified in September 2011. GNU 4.7 is the first minor
 # release following that (March 2012), and the first minor release to
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 9352ca5..2a55fde 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -52,6 +52,7 @@
   F(cxx_final) \
   F(cxx_inheriting_constructors) \
   F(cxx_lambdas) \
+  F(cxx_nonstatic_member_init) \
   F(cxx_override) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
diff --git a/Tests/CompileFeatures/cxx_nonstatic_member_init.cpp b/Tests/CompileFeatures/cxx_nonstatic_member_init.cpp
new file mode 100644
index 0000000..6b7fa70
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_nonstatic_member_init.cpp
@@ -0,0 +1,4 @@
+class A
+{
+  int m_i = 42;
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15cdf6f51dde9a394ffc7a398e201e59cc959111
commit 15cdf6f51dde9a394ffc7a398e201e59cc959111
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:23:40 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_lambdas.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 41820e0..9441e57 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -57,6 +57,11 @@ The features known to this version of CMake are:
 
   .. _N2540: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
 
+``cxx_lambdas``
+  Lambda functions, as defined in N2927_.
+
+  .. _N2927: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2927.pdf
+
 ``cxx_override``
   Override control ``override`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 6844e28..f182cea 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -20,6 +20,7 @@ set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.5
 set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
+set(_cmake_feature_test_cxx_lambdas "${GNU45_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 25a6fee..9352ca5 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -51,6 +51,7 @@
   F(cxx_explicit_conversions) \
   F(cxx_final) \
   F(cxx_inheriting_constructors) \
+  F(cxx_lambdas) \
   F(cxx_override) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
diff --git a/Tests/CompileFeatures/cxx_lambdas.cpp b/Tests/CompileFeatures/cxx_lambdas.cpp
new file mode 100644
index 0000000..eecaa23
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_lambdas.cpp
@@ -0,0 +1,5 @@
+
+void someFunc()
+{
+  [](){}();
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a579a0aab4e55aeb0a71dc7c1b58db3d126e1fd4
commit a579a0aab4e55aeb0a71dc7c1b58db3d126e1fd4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:18:01 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_inheriting_constructors.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 33e95b5..41820e0 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -52,6 +52,11 @@ The features known to this version of CMake are:
 
   .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
 
+``cxx_inheriting_constructors``
+  Inheriting constructors, as defined in N2540_.
+
+  .. _N2540: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
+
 ``cxx_override``
   Override control ``override`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 30bb171..6844e28 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -2,6 +2,8 @@
 # Reference: http://gcc.gnu.org/projects/cxx0x.html
 
 set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
+set(GNU48_CXX11 "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_inheriting_constructors "${GNU48_CXX11}")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 5c4f6ff..25a6fee 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -50,6 +50,7 @@
   F(cxx_deleted_functions) \
   F(cxx_explicit_conversions) \
   F(cxx_final) \
+  F(cxx_inheriting_constructors) \
   F(cxx_override) \
   F(cxx_static_assert) \
   F(cxx_strong_enums) \
diff --git a/Tests/CompileFeatures/cxx_inheriting_constructors.cpp b/Tests/CompileFeatures/cxx_inheriting_constructors.cpp
new file mode 100644
index 0000000..a83b624
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_inheriting_constructors.cpp
@@ -0,0 +1,18 @@
+
+struct A
+{
+  int m_i;
+
+  A(int i) : m_i(i) {}
+};
+
+struct B : public A
+{
+  using A::A;
+};
+
+void someFunc()
+{
+  int i;
+  B b(i);
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ebab2015f9b9b11f09e19369be7a1c8d3bfe3ae4
commit ebab2015f9b9b11f09e19369be7a1c8d3bfe3ae4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:12:26 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_explicit_conversions.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index df80abf..33e95b5 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -42,6 +42,11 @@ The features known to this version of CMake are:
 
   .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
 
+``cxx_explicit_conversions``
+  Explicit conversion operators, as defined in N2437_.
+
+  .. _N2437: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
 ``cxx_final``
   Override control ``final`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index f01382f..30bb171 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -15,6 +15,9 @@ set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
 # TODO: Should be supported by GNU 4.6
 set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
+# TODO: Should be supported by GNU 4.5
+set(GNU45_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_explicit_conversions "${GNU45_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 192171f..5c4f6ff 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -48,6 +48,7 @@
   F(cxx_defaulted_functions) \
   F(cxx_delegating_constructors) \
   F(cxx_deleted_functions) \
+  F(cxx_explicit_conversions) \
   F(cxx_final) \
   F(cxx_override) \
   F(cxx_static_assert) \
diff --git a/Tests/CompileFeatures/cxx_explicit_conversions.cpp b/Tests/CompileFeatures/cxx_explicit_conversions.cpp
new file mode 100644
index 0000000..0decdcd
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_explicit_conversions.cpp
@@ -0,0 +1,10 @@
+
+class A
+{
+  int m_i;
+public:
+  explicit operator bool()
+  {
+    return m_i != 0;
+  }
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ac3a1b14c0235cb21b1cce445269426e84e46ae1
commit ac3a1b14c0235cb21b1cce445269426e84e46ae1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:15:53 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:55 2014 +0200

    Features: Add cxx_deleted_functions.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index bf91fbc..df80abf 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -37,6 +37,11 @@ The features known to this version of CMake are:
 
   .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
 
+``cxx_deleted_functions``
+  Deleted functions, as defined in  N2346_.
+
+  .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
 ``cxx_final``
   Override control ``final`` keyword, as defined in N2928_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 7d3c13b..f01382f 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -19,6 +19,7 @@ set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_deleted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index c7c98aa..192171f 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -47,6 +47,7 @@
   F(cxx_decltype) \
   F(cxx_defaulted_functions) \
   F(cxx_delegating_constructors) \
+  F(cxx_deleted_functions) \
   F(cxx_final) \
   F(cxx_override) \
   F(cxx_static_assert) \
diff --git a/Tests/CompileFeatures/cxx_deleted_functions.cpp b/Tests/CompileFeatures/cxx_deleted_functions.cpp
new file mode 100644
index 0000000..4ecb1e9
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_deleted_functions.cpp
@@ -0,0 +1,6 @@
+
+struct A
+{
+  A(const A&) = delete;
+  A& operator=(const A&) = delete;
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=91f3699000084804100a782e93509a3a53adc2a8
commit 91f3699000084804100a782e93509a3a53adc2a8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:12:02 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_defaulted_functions.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 97689dc..bf91fbc 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -27,6 +27,11 @@ The features known to this version of CMake are:
 
   .. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
 
+``cxx_defaulted_functions``
+  Defaulted functions, as defined in N2346_.
+
+  .. _N2346: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
 ``cxx_delegating_constructors``
   Delegating constructors, as defined in N1986_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index de328c4..7d3c13b 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -18,6 +18,7 @@ set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_functions "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 6ce3c16..c7c98aa 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -45,6 +45,7 @@
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_decltype) \
+  F(cxx_defaulted_functions) \
   F(cxx_delegating_constructors) \
   F(cxx_final) \
   F(cxx_override) \
diff --git a/Tests/CompileFeatures/cxx_defaulted_functions.cpp b/Tests/CompileFeatures/cxx_defaulted_functions.cpp
new file mode 100644
index 0000000..b679a92
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_defaulted_functions.cpp
@@ -0,0 +1,9 @@
+
+struct A {
+  A() = default;
+};
+
+void someFunc()
+{
+  A a;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7e748417bc8e06caa8eb0b6a6258b7d24cc22bfb
commit 7e748417bc8e06caa8eb0b6a6258b7d24cc22bfb
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:08:49 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_decltype.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 4a68573..97689dc 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -22,6 +22,11 @@ The features known to this version of CMake are:
 
   .. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
 
+``cxx_decltype``
+  Decltype, as defined in N2343_.
+
+  .. _N2343: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
+
 ``cxx_delegating_constructors``
   Delegating constructors, as defined in N1986_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index c451b7e..de328c4 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -30,5 +30,6 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
 # TODO: Should be supported by GNU 4.3
 set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_decltype "${GNU43_CXX11}")
 set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 12d88e4..6ce3c16 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -44,6 +44,7 @@
 #define FOR_EACH_CXX_FEATURE(F) \
   F(cxx_auto_type) \
   F(cxx_constexpr) \
+  F(cxx_decltype) \
   F(cxx_delegating_constructors) \
   F(cxx_final) \
   F(cxx_override) \
diff --git a/Tests/CompileFeatures/cxx_decltype.cpp b/Tests/CompileFeatures/cxx_decltype.cpp
new file mode 100644
index 0000000..24ec51e
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_decltype.cpp
@@ -0,0 +1,7 @@
+
+int someFunc()
+{
+  int i = 0;
+  decltype(i) other = 0;
+  return other;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8d3467636c4fad32c25390244a62e58e068c33ad
commit 8d3467636c4fad32c25390244a62e58e068c33ad
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:02:54 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_strong_enums.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 0d1329c..4a68573 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -42,6 +42,11 @@ The features known to this version of CMake are:
 
   .. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
 
+``cxx_strong_enums``
+  Strongly typed enums, as defined in N2347_.
+
+  .. _N2347: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
+
 ``cxx_trailing_return_types``
   Automatic function return type, as defined in N2541_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 3549824..c451b7e 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -18,6 +18,7 @@ set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_strong_enums "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: If features are ever recorded for GNU 4.3, there should possibly
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 3c23045..12d88e4 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -48,6 +48,7 @@
   F(cxx_final) \
   F(cxx_override) \
   F(cxx_static_assert) \
+  F(cxx_strong_enums) \
   F(cxx_trailing_return_types) \
   F(cxx_variadic_templates)
 
diff --git a/Tests/CompileFeatures/cxx_strong_enums.cpp b/Tests/CompileFeatures/cxx_strong_enums.cpp
new file mode 100644
index 0000000..6262456
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_strong_enums.cpp
@@ -0,0 +1,7 @@
+
+enum class Colors
+{
+  RedColor,
+  GreenColor,
+  BlueColor
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0caf08e43ef405a879393cb3a4bae0b6b87e26b6
commit 0caf08e43ef405a879393cb3a4bae0b6b87e26b6
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 00:02:14 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_auto_function.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 073b0ca..0d1329c 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -42,6 +42,11 @@ The features known to this version of CMake are:
 
   .. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
 
+``cxx_trailing_return_types``
+  Automatic function return type, as defined in N2541_.
+
+  .. _N2541: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
+
 ``cxx_variadic_templates``
   Variadic templates, as defined in N2242_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 87ed765..3549824 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -18,6 +18,7 @@ set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_trailing_return_types "${GNU44_CXX11}")
 set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # TODO: If features are ever recorded for GNU 4.3, there should possibly
 # be a new feature added like cxx_variadic_template_template_parameters,
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 8e4ba95..3c23045 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -48,6 +48,7 @@
   F(cxx_final) \
   F(cxx_override) \
   F(cxx_static_assert) \
+  F(cxx_trailing_return_types) \
   F(cxx_variadic_templates)
 
 class cmMakefile::Internals
diff --git a/Tests/CompileFeatures/cxx_trailing_return_types.cpp b/Tests/CompileFeatures/cxx_trailing_return_types.cpp
new file mode 100644
index 0000000..01a76cb
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_trailing_return_types.cpp
@@ -0,0 +1,5 @@
+
+auto someFunc() -> int
+{
+  return 42;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0685ac6edc8f9285e7b12d32a182e569a372856c
commit 0685ac6edc8f9285e7b12d32a182e569a372856c
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Mar 19 13:32:59 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_override.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index a5ecf5a..073b0ca 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -32,6 +32,11 @@ The features known to this version of CMake are:
 
   .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
 
+``cxx_override``
+  Override control ``override`` keyword, as defined in N2928_.
+
+  .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 52f49b8..87ed765 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -6,6 +6,7 @@ set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
 set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
+set(_cmake_feature_test_cxx_override "${GNU47_CXX11}")
 # NOTE: C++11 was ratified in September 2011. GNU 4.7 is the first minor
 # release following that (March 2012), and the first minor release to
 # support -std=c++11. Prior to that, support for C++11 features is technically
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index a916141..8e4ba95 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -46,6 +46,7 @@
   F(cxx_constexpr) \
   F(cxx_delegating_constructors) \
   F(cxx_final) \
+  F(cxx_override) \
   F(cxx_static_assert) \
   F(cxx_variadic_templates)
 
diff --git a/Tests/CompileFeatures/cxx_override.cpp b/Tests/CompileFeatures/cxx_override.cpp
new file mode 100644
index 0000000..55bec13
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_override.cpp
@@ -0,0 +1,7 @@
+
+struct A {
+  virtual void doNothing() {}
+};
+struct B : A {
+  void doNothing() override {}
+};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=57ac6a905c33211af420aaf1e7fc14b3871a7b16
commit 57ac6a905c33211af420aaf1e7fc14b3871a7b16
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Mar 18 23:42:05 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_final.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 042cd43..a5ecf5a 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -27,6 +27,11 @@ The features known to this version of CMake are:
 
   .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
 
+``cxx_final``
+  Override control ``final`` keyword, as defined in N2928_.
+
+  .. _N2928: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+
 ``cxx_static_assert``
   Static assert, as defined in N1720_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 5d61656..52f49b8 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -5,6 +5,7 @@ set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
+set(_cmake_feature_test_cxx_final "${GNU47_CXX11}")
 # NOTE: C++11 was ratified in September 2011. GNU 4.7 is the first minor
 # release following that (March 2012), and the first minor release to
 # support -std=c++11. Prior to that, support for C++11 features is technically
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index fa806a7..a916141 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -45,6 +45,7 @@
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_delegating_constructors) \
+  F(cxx_final) \
   F(cxx_static_assert) \
   F(cxx_variadic_templates)
 
diff --git a/Tests/CompileFeatures/cxx_final.cpp b/Tests/CompileFeatures/cxx_final.cpp
new file mode 100644
index 0000000..598cb94
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_final.cpp
@@ -0,0 +1,2 @@
+
+struct A final {};

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=88542a61011d13ed0a92b9a1da49d428846aaf20
commit 88542a61011d13ed0a92b9a1da49d428846aaf20
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 00:00:28 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_static_assert.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index aa314cd..042cd43 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -27,6 +27,11 @@ The features known to this version of CMake are:
 
   .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
 
+``cxx_static_assert``
+  Static assert, as defined in N1720_.
+
+  .. _N1720: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
+
 ``cxx_variadic_templates``
   Variadic templates, as defined in N2242_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 5321eda..5d61656 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -24,4 +24,7 @@ set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
 # 'completes' it, so that is the version we record as having the variadic
 # templates capability in CMake. See
 # http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
+# TODO: Should be supported by GNU 4.3
+set(GNU43_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_static_assert "${GNU43_CXX11}")
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index cc1dfa1..fa806a7 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -45,6 +45,7 @@
   F(cxx_auto_type) \
   F(cxx_constexpr) \
   F(cxx_delegating_constructors) \
+  F(cxx_static_assert) \
   F(cxx_variadic_templates)
 
 class cmMakefile::Internals
diff --git a/Tests/CompileFeatures/cxx_static_assert.cpp b/Tests/CompileFeatures/cxx_static_assert.cpp
new file mode 100644
index 0000000..6aa8678
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_static_assert.cpp
@@ -0,0 +1,2 @@
+
+static_assert(true, "static_assert test");

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=91289312fa9da0807b5c59a78de2c5ad21d6cda1
commit 91289312fa9da0807b5c59a78de2c5ad21d6cda1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Mar 18 12:53:01 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_constexpr.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index b6b2b35..aa314cd 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -17,6 +17,11 @@ The features known to this version of CMake are:
 
   .. _N1984: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
 
+``cxx_constexpr``
+  Constant expressions, as defined in N2235_.
+
+  .. _N2235: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
+
 ``cxx_delegating_constructors``
   Delegating constructors, as defined in N1986_.
 
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 6baa463..5321eda 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -10,6 +10,9 @@ set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
 # support -std=c++11. Prior to that, support for C++11 features is technically
 # experiemental and possibly incomplete (see for example the note below about
 # cxx_variadic_template_template_parameters)
+# TODO: Should be supported by GNU 4.6
+set(GNU46_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_constexpr "${GNU46_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 52f4fb6..cc1dfa1 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -43,6 +43,7 @@
 
 #define FOR_EACH_CXX_FEATURE(F) \
   F(cxx_auto_type) \
+  F(cxx_constexpr) \
   F(cxx_delegating_constructors) \
   F(cxx_variadic_templates)
 
diff --git a/Tests/CompileFeatures/cxx_constexpr.cpp b/Tests/CompileFeatures/cxx_constexpr.cpp
new file mode 100644
index 0000000..570c10f
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_constexpr.cpp
@@ -0,0 +1,5 @@
+
+constexpr int getNum()
+{
+  return 42;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=10f33eee1dfefa9e5a2ee5cf4946095bf08b19bc
commit 10f33eee1dfefa9e5a2ee5cf4946095bf08b19bc
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Apr 2 15:02:41 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_variadic_templates.
    
    Expect cxx_variadic_templates to implement N2555.
    
    N2555 is essentially a bugfix and predates most compiler releases which
    aimed to experimentally support variadic templates.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 957c763..b6b2b35 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -21,3 +21,8 @@ The features known to this version of CMake are:
   Delegating constructors, as defined in N1986_.
 
   .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
+
+``cxx_variadic_templates``
+  Variadic templates, as defined in N2242_.
+
+  .. _N2242: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index 4f14b17..6baa463 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -5,7 +5,20 @@ set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
 # TODO: Should be supported by GNU 4.7
 set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
+# NOTE: C++11 was ratified in September 2011. GNU 4.7 is the first minor
+# release following that (March 2012), and the first minor release to
+# support -std=c++11. Prior to that, support for C++11 features is technically
+# experiemental and possibly incomplete (see for example the note below about
+# cxx_variadic_template_template_parameters)
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
+set(_cmake_feature_test_cxx_variadic_templates "${GNU44_CXX11}")
+# TODO: If features are ever recorded for GNU 4.3, there should possibly
+# be a new feature added like cxx_variadic_template_template_parameters,
+# which is implemented by GNU 4.4, but not 4.3. cxx_variadic_templates is
+# actually implemented by GNU 4.3, but variadic template template parameters
+# 'completes' it, so that is the version we record as having the variadic
+# templates capability in CMake. See
+# http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
 set(_oldestSupported)
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index de6b972..52f4fb6 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -43,7 +43,8 @@
 
 #define FOR_EACH_CXX_FEATURE(F) \
   F(cxx_auto_type) \
-  F(cxx_delegating_constructors)
+  F(cxx_delegating_constructors) \
+  F(cxx_variadic_templates)
 
 class cmMakefile::Internals
 {
diff --git a/Tests/CompileFeatures/cxx_variadic_templates.cpp b/Tests/CompileFeatures/cxx_variadic_templates.cpp
new file mode 100644
index 0000000..1d5a706
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_variadic_templates.cpp
@@ -0,0 +1,65 @@
+template<int I, int... Is>
+struct Interface;
+
+template<int I>
+struct Interface<I>
+{
+  static int accumulate()
+  {
+    return I;
+  }
+};
+
+template<int I, int... Is>
+struct Interface
+{
+  static int accumulate()
+  {
+    return I + Interface<Is...>::accumulate();
+  }
+};
+
+// Note: split this into a separate test if a
+// cxx_variadic_template_template_parameters feature is added.
+
+template<typename T>
+struct eval {
+  enum {
+    Matched = 0
+  };
+};
+
+template<template<typename...> class T, typename... U>
+struct eval<T<U...> > {
+  enum {
+    Matched = 1
+  };
+};
+
+template<typename...>
+struct A {
+
+};
+template<typename T>
+struct B {
+
+};
+template<typename T, typename U>
+struct C {
+
+};
+template<typename T, typename U, typename...>
+struct D {
+
+};
+
+// Note: This test assumes that a compiler supporting this feature
+// supports static_assert. Add a workaround if that does not hold.
+static_assert(eval<A<> >::Matched, "A Matches");
+static_assert(eval<A<int> >::Matched, "A Matches");
+static_assert(eval<A<int, char> >::Matched, "A Matches");
+static_assert(eval<B<int> >::Matched, "B Matches");
+static_assert(eval<C<int, char> >::Matched, "C Matches");
+static_assert(eval<D<int, char> >::Matched, "D Matches");
+static_assert(eval<D<int, char, bool> >::Matched, "D Matches");
+static_assert(eval<D<int, char, bool, double> >::Matched, "D Matches");

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=750dfee29c3f45020e8fcff91499a2542913b649
commit 750dfee29c3f45020e8fcff91499a2542913b649
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Apr 7 17:28:55 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Apr 8 11:05:54 2014 +0200

    Features: Add cxx_delegating_constructors.

diff --git a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
index 3278b2e..957c763 100644
--- a/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
+++ b/Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst
@@ -16,3 +16,8 @@ The features known to this version of CMake are:
   Automatic type deduction, as defined in N1984_.
 
   .. _N1984: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
+
+``cxx_delegating_constructors``
+  Delegating constructors, as defined in N1986_.
+
+  .. _N1986: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
diff --git a/Modules/Compiler/GNU-CXX-FeatureTests.cmake b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
index b36315f..4f14b17 100644
--- a/Modules/Compiler/GNU-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/GNU-CXX-FeatureTests.cmake
@@ -2,6 +2,9 @@
 # Reference: http://gcc.gnu.org/projects/cxx0x.html
 
 set(_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 408")
+# TODO: Should be supported by GNU 4.7
+set(GNU47_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_delegating_constructors "${GNU47_CXX11}")
 # TODO: Should be supported by GNU 4.4
 set(GNU44_CXX11 "${_oldestSupported} && __cplusplus >= 201103L")
 set(_cmake_feature_test_cxx_auto_type "${GNU44_CXX11}")
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 5004a08..de6b972 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -42,7 +42,8 @@
 #include <assert.h>
 
 #define FOR_EACH_CXX_FEATURE(F) \
-  F(cxx_auto_type)
+  F(cxx_auto_type) \
+  F(cxx_delegating_constructors)
 
 class cmMakefile::Internals
 {
diff --git a/Tests/CompileFeatures/cxx_delegating_constructors.cpp b/Tests/CompileFeatures/cxx_delegating_constructors.cpp
new file mode 100644
index 0000000..4b41615
--- /dev/null
+++ b/Tests/CompileFeatures/cxx_delegating_constructors.cpp
@@ -0,0 +1,15 @@
+
+class Foo
+{
+public:
+  Foo(int i);
+
+  Foo(double d)
+    : Foo(static_cast<int>(d))
+  {
+
+  }
+
+private:
+  int m_i;
+};

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list