[Cmake-commits] CMake branch, next, updated. v3.0.0-rc3-2098-g536e0ce

Stephen Kelly steveire at gmail.com
Mon Apr 7 12:16:41 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  536e0ce89c7bd4bcea0b4e658b4112c4f00e544c (commit)
       via  3a566908bf8d403b9f83743336f8de91925c3d6c (commit)
       via  4cc66f2bda8d3018f88ce8da193588174dd4dacb (commit)
       via  7e0a438011ead7788b5fcea76434f8db9a0fb2f1 (commit)
       via  695ee56fd31162ead1e88e5a93f59d79d55100d0 (commit)
       via  98964a1c8f0270456835b36692b7186d2e3fbb35 (commit)
       via  265c6a5890008ad7c930a987bfcc86eea321d031 (commit)
       via  8b22112035a999c4ef3ee839e5aefcbb750ed40d (commit)
       via  cbede848046d9fa6ea0311bba9917d5a89d753ae (commit)
       via  cccfb1ff0ca6a070c2add5437ef57b1d92870da4 (commit)
       via  a0328d933e0cb1a9b4ce3184605ac7340b0ea321 (commit)
       via  a6aa7667f1364bc8fa5d4ffe3f816b49e604bc56 (commit)
       via  6065de606438567b4a68cccf1b97138000e3e6b8 (commit)
       via  b4cdff2104ba8e602411ae6679f29beca5dd7ffe (commit)
       via  fdb817886f528f7805ac2583671dbd1be0727ec8 (commit)
       via  830f0c7e75b60e3beb2a2cc0d0123d5e67b168a7 (commit)
       via  d249622f2b1399b0fd7504fa809f5315942a738f (commit)
       via  7e1ff784ef6c40e39d317adde02379f77a1813cb (commit)
       via  1b97f59f11477b9fe7c1eb46e404f111eb7daad0 (commit)
       via  b23cf888e83d1fd93d2eb455ed41d319a8a97705 (commit)
       via  6109e36ae3b88ed150728f76c325bd420ae2ea48 (commit)
       via  1c7057c000e02ec41c8e471eeeb368048d64b66a (commit)
       via  ab13018f237215f140f30668dcdb86bbf88f45d9 (commit)
       via  2f023959fae1ba4ff03576c91c88b47528066ff3 (commit)
       via  55e87ca6f8ec2b04cf63ef4fdd349b3dbafa2807 (commit)
       via  0cbb6a83270a670cb35a2753c46e00d55b1462d4 (commit)
       via  38c681491c2ad85efebc495a05922a96f0818602 (commit)
       via  15141a91e2453bb19c0f7584e2ad8dd86a693e44 (commit)
       via  c31e11c1231a7b91ce2ccca401e503c3a9bf74ed (commit)
       via  5267690a68436f6b7696e3b90d1b609343435525 (commit)
       via  edc199f9eac4395194a88fa59e7ca7aa5bf9743d (commit)
       via  91fd67203406963cd284c3be22ec077899c706ea (commit)
       via  0bf58438dd24a14552e6002f8d010184747637e9 (commit)
       via  2435c2e849e7de29525ed4134ea2af0459c93819 (commit)
       via  598b611bdb0aba7779b1c291939438f638433cde (commit)
       via  77c64ad876629a517ec4aade88b31fe8d61fa744 (commit)
       via  fe836b0be76b0eb1d746f4996c87e45a06fc2ae3 (commit)
       via  61e31bfc1368391a126862c21893f7d857e19e7f (commit)
       via  919ce2fc5f96db949f4fae5785ddcec6d8ae4092 (commit)
       via  50caf2f55a6ed0d1f63ce49333a97cb31a423d2f (commit)
       via  99fb4c5ef87db57d3dd195e00c097604c93bea75 (commit)
       via  2a001dc67da259a5ff7f362f6988f9387fe637fb (commit)
       via  1683ea4b24e23067d7e26de737186b92b7de75b6 (commit)
       via  fb65bab62277ed17abf1acbae0dc886d321c93dc (commit)
       via  ea6d4bdf2cac04c83de275122a9411d014666580 (commit)
      from  232ff6b2d9a0e8f0e4dd73c89b01d79620e0cca7 (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=536e0ce89c7bd4bcea0b4e658b4112c4f00e544c
commit 536e0ce89c7bd4bcea0b4e658b4112c4f00e544c
Merge: 232ff6b 3a56690
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Apr 7 12:16:37 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Apr 7 12:16:37 2014 -0400

    Merge topic 'cxx11-features' into next
    
    3a566908 Features: Add cxx_defaulted_move_initializers.
    4cc66f2b Features: Add cxx_long_long_type.
    7e0a4380 Features: Add cxx_func_identifier.
    695ee56f Features: Add cxx_local_type_template_args.
    98964a1c Features: Add cxx_extended_friend_declarations.
    265c6a58 Features: Add cxx_enum_forward_declarations.
    8b221120 Features: Add cxx_default_function_template_args.
    cbede848 Features: Add cxx_right_angle_brackets.
    cccfb1ff Features: Add cxx_decltype_incomplete_return_types.
    a0328d93 Features: Add cxx_sizeof_member.
    a6aa7667 Features: Add cxx_thread_local.
    6065de60 Features: Add cxx_inline_namespaces.
    b4cdff21 Features: Add cxx_variadic_macros.
    fdb81788 Features: Add cxx_uniform_initialization.
    830f0c7e Features: Add cxx_generalized_initializers.
    d249622f Features: Add cxx_attributes.
    ...


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3a566908bf8d403b9f83743336f8de91925c3d6c
commit 3a566908bf8d403b9f83743336f8de91925c3d6c
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 11:22:49 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:05 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=4cc66f2bda8d3018f88ce8da193588174dd4dacb
commit 4cc66f2bda8d3018f88ce8da193588174dd4dacb
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 11:14:42 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:05 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=7e0a438011ead7788b5fcea76434f8db9a0fb2f1
commit 7e0a438011ead7788b5fcea76434f8db9a0fb2f1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:52:38 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:05 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=695ee56fd31162ead1e88e5a93f59d79d55100d0
commit 695ee56fd31162ead1e88e5a93f59d79d55100d0
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:38:50 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:05 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=98964a1c8f0270456835b36692b7186d2e3fbb35
commit 98964a1c8f0270456835b36692b7186d2e3fbb35
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:37:52 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:05 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=265c6a5890008ad7c930a987bfcc86eea321d031
commit 265c6a5890008ad7c930a987bfcc86eea321d031
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:37:08 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:05 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=8b22112035a999c4ef3ee839e5aefcbb750ed40d
commit 8b22112035a999c4ef3ee839e5aefcbb750ed40d
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:41:01 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=cbede848046d9fa6ea0311bba9917d5a89d753ae
commit cbede848046d9fa6ea0311bba9917d5a89d753ae
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:17:20 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=cccfb1ff0ca6a070c2add5437ef57b1d92870da4
commit cccfb1ff0ca6a070c2add5437ef57b1d92870da4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:17:15 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=a0328d933e0cb1a9b4ce3184605ac7340b0ea321
commit a0328d933e0cb1a9b4ce3184605ac7340b0ea321
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:09:37 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=a6aa7667f1364bc8fa5d4ffe3f816b49e604bc56
commit a6aa7667f1364bc8fa5d4ffe3f816b49e604bc56
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:10:54 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=6065de606438567b4a68cccf1b97138000e3e6b8
commit 6065de606438567b4a68cccf1b97138000e3e6b8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Apr 6 10:07:19 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=b4cdff2104ba8e602411ae6679f29beca5dd7ffe
commit b4cdff2104ba8e602411ae6679f29beca5dd7ffe
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 15:05:10 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=fdb817886f528f7805ac2583671dbd1be0727ec8
commit fdb817886f528f7805ac2583671dbd1be0727ec8
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 14:53:25 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=830f0c7e75b60e3beb2a2cc0d0123d5e67b168a7
commit 830f0c7e75b60e3beb2a2cc0d0123d5e67b168a7
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 14:52:48 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=d249622f2b1399b0fd7504fa809f5315942a738f
commit d249622f2b1399b0fd7504fa809f5315942a738f
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 14:10:17 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=7e1ff784ef6c40e39d317adde02379f77a1813cb
commit 7e1ff784ef6c40e39d317adde02379f77a1813cb
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 13:55:27 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=1b97f59f11477b9fe7c1eb46e404f111eb7daad0
commit 1b97f59f11477b9fe7c1eb46e404f111eb7daad0
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 13:54:08 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=b23cf888e83d1fd93d2eb455ed41d319a8a97705
commit b23cf888e83d1fd93d2eb455ed41d319a8a97705
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 13:11:37 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=6109e36ae3b88ed150728f76c325bd420ae2ea48
commit 6109e36ae3b88ed150728f76c325bd420ae2ea48
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 11:06:02 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:04 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=1c7057c000e02ec41c8e471eeeb368048d64b66a
commit 1c7057c000e02ec41c8e471eeeb368048d64b66a
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 10:59:22 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=ab13018f237215f140f30668dcdb86bbf88f45d9
commit ab13018f237215f140f30668dcdb86bbf88f45d9
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 10:56:09 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=2f023959fae1ba4ff03576c91c88b47528066ff3
commit 2f023959fae1ba4ff03576c91c88b47528066ff3
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 10:50:41 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=55e87ca6f8ec2b04cf63ef4fdd349b3dbafa2807
commit 55e87ca6f8ec2b04cf63ef4fdd349b3dbafa2807
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 09:39:40 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=0cbb6a83270a670cb35a2753c46e00d55b1462d4
commit 0cbb6a83270a670cb35a2753c46e00d55b1462d4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 09:25:46 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=38c681491c2ad85efebc495a05922a96f0818602
commit 38c681491c2ad85efebc495a05922a96f0818602
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 09:15:18 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=15141a91e2453bb19c0f7584e2ad8dd86a693e44
commit 15141a91e2453bb19c0f7584e2ad8dd86a693e44
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:40:06 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=c31e11c1231a7b91ce2ccca401e503c3a9bf74ed
commit c31e11c1231a7b91ce2ccca401e503c3a9bf74ed
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:34:47 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=5267690a68436f6b7696e3b90d1b609343435525
commit 5267690a68436f6b7696e3b90d1b609343435525
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:32:06 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=edc199f9eac4395194a88fa59e7ca7aa5bf9743d
commit edc199f9eac4395194a88fa59e7ca7aa5bf9743d
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:29:17 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=91fd67203406963cd284c3be22ec077899c706ea
commit 91fd67203406963cd284c3be22ec077899c706ea
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:23:40 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=0bf58438dd24a14552e6002f8d010184747637e9
commit 0bf58438dd24a14552e6002f8d010184747637e9
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:18:01 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=2435c2e849e7de29525ed4134ea2af0459c93819
commit 2435c2e849e7de29525ed4134ea2af0459c93819
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 19:12:26 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=598b611bdb0aba7779b1c291939438f638433cde
commit 598b611bdb0aba7779b1c291939438f638433cde
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:15:53 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:03 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=77c64ad876629a517ec4aade88b31fe8d61fa744
commit 77c64ad876629a517ec4aade88b31fe8d61fa744
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:12:02 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=fe836b0be76b0eb1d746f4996c87e45a06fc2ae3
commit fe836b0be76b0eb1d746f4996c87e45a06fc2ae3
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:08:49 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=61e31bfc1368391a126862c21893f7d857e19e7f
commit 61e31bfc1368391a126862c21893f7d857e19e7f
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Apr 3 00:02:54 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=919ce2fc5f96db949f4fae5785ddcec6d8ae4092
commit 919ce2fc5f96db949f4fae5785ddcec6d8ae4092
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 00:02:14 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=50caf2f55a6ed0d1f63ce49333a97cb31a423d2f
commit 50caf2f55a6ed0d1f63ce49333a97cb31a423d2f
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Mar 19 13:32:59 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=99fb4c5ef87db57d3dd195e00c097604c93bea75
commit 99fb4c5ef87db57d3dd195e00c097604c93bea75
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Mar 18 23:42:05 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=2a001dc67da259a5ff7f362f6988f9387fe637fb
commit 2a001dc67da259a5ff7f362f6988f9387fe637fb
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Apr 4 00:00:28 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=1683ea4b24e23067d7e26de737186b92b7de75b6
commit 1683ea4b24e23067d7e26de737186b92b7de75b6
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Mar 18 12:53:01 2014 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=fb65bab62277ed17abf1acbae0dc886d321c93dc
commit fb65bab62277ed17abf1acbae0dc886d321c93dc
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Apr 2 15:02:41 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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=ea6d4bdf2cac04c83de275122a9411d014666580
commit ea6d4bdf2cac04c83de275122a9411d014666580
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Apr 7 17:28:55 2014 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Apr 7 18:12:02 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:
 Help/variable/CMAKE_CXX_KNOWN_FEATURES.rst         |  220 ++++++++++++++++++++
 Modules/Compiler/GNU-CXX-FeatureTests.cmake        |   69 ++++++
 Source/cmMakefile.cxx                              |   46 +++-
 Tests/CompileFeatures/cxx_alias_templates.cpp      |   11 +
 Tests/CompileFeatures/cxx_alignas.cpp              |    4 +
 Tests/CompileFeatures/cxx_alignof.cpp              |    5 +
 Tests/CompileFeatures/cxx_attributes.cpp           |    2 +
 Tests/CompileFeatures/cxx_constexpr.cpp            |    5 +
 Tests/CompileFeatures/cxx_decltype.cpp             |    7 +
 .../cxx_decltype_incomplete_return_types.cpp       |   14 ++
 .../cxx_default_function_template_args.cpp         |   12 ++
 Tests/CompileFeatures/cxx_defaulted_functions.cpp  |    9 +
 .../cxx_defaulted_move_initializers.cpp            |    7 +
 .../cxx_delegating_constructors.cpp                |   15 ++
 Tests/CompileFeatures/cxx_deleted_functions.cpp    |    6 +
 .../cxx_enum_forward_declarations.cpp              |    8 +
 Tests/CompileFeatures/cxx_explicit_conversions.cpp |   10 +
 .../cxx_extended_friend_declarations.cpp           |   25 +++
 Tests/CompileFeatures/cxx_extern_templates.cpp     |   12 ++
 Tests/CompileFeatures/cxx_final.cpp                |    2 +
 Tests/CompileFeatures/cxx_func_identifier.cpp      |    6 +
 .../cxx_generalized_initializers.cpp               |   23 ++
 .../cxx_inheriting_constructors.cpp                |   18 ++
 Tests/CompileFeatures/cxx_inline_namespaces.cpp    |   26 +++
 Tests/CompileFeatures/cxx_lambdas.cpp              |    5 +
 .../cxx_local_type_template_args.cpp               |   21 ++
 Tests/CompileFeatures/cxx_long_long_type.cpp       |    5 +
 Tests/CompileFeatures/cxx_noexcept.cpp             |    5 +
 .../CompileFeatures/cxx_nonstatic_member_init.cpp  |    4 +
 Tests/CompileFeatures/cxx_nullptr.cpp              |   10 +
 Tests/CompileFeatures/cxx_override.cpp             |    7 +
 Tests/CompileFeatures/cxx_range_for.cpp            |   10 +
 Tests/CompileFeatures/cxx_raw_string_literals.cpp  |    7 +
 .../cxx_reference_qualified_functions.cpp          |   11 +
 Tests/CompileFeatures/cxx_right_angle_brackets.cpp |   12 ++
 Tests/CompileFeatures/cxx_rvalue_references.cpp    |    5 +
 Tests/CompileFeatures/cxx_sizeof_member.cpp        |   10 +
 Tests/CompileFeatures/cxx_static_assert.cpp        |    2 +
 Tests/CompileFeatures/cxx_strong_enums.cpp         |    7 +
 Tests/CompileFeatures/cxx_thread_local.cpp         |    2 +
 .../CompileFeatures/cxx_trailing_return_types.cpp  |    5 +
 Tests/CompileFeatures/cxx_unicode_literals.cpp     |    3 +
 .../CompileFeatures/cxx_uniform_initialization.cpp |    9 +
 Tests/CompileFeatures/cxx_unrestricted_unions.cpp  |   11 +
 Tests/CompileFeatures/cxx_user_literals.cpp        |    7 +
 Tests/CompileFeatures/cxx_variadic_macros.cpp      |   12 ++
 Tests/CompileFeatures/cxx_variadic_templates.cpp   |   65 ++++++
 47 files changed, 796 insertions(+), 1 deletion(-)
 create mode 100644 Tests/CompileFeatures/cxx_alias_templates.cpp
 create mode 100644 Tests/CompileFeatures/cxx_alignas.cpp
 create mode 100644 Tests/CompileFeatures/cxx_alignof.cpp
 create mode 100644 Tests/CompileFeatures/cxx_attributes.cpp
 create mode 100644 Tests/CompileFeatures/cxx_constexpr.cpp
 create mode 100644 Tests/CompileFeatures/cxx_decltype.cpp
 create mode 100644 Tests/CompileFeatures/cxx_decltype_incomplete_return_types.cpp
 create mode 100644 Tests/CompileFeatures/cxx_default_function_template_args.cpp
 create mode 100644 Tests/CompileFeatures/cxx_defaulted_functions.cpp
 create mode 100644 Tests/CompileFeatures/cxx_defaulted_move_initializers.cpp
 create mode 100644 Tests/CompileFeatures/cxx_delegating_constructors.cpp
 create mode 100644 Tests/CompileFeatures/cxx_deleted_functions.cpp
 create mode 100644 Tests/CompileFeatures/cxx_enum_forward_declarations.cpp
 create mode 100644 Tests/CompileFeatures/cxx_explicit_conversions.cpp
 create mode 100644 Tests/CompileFeatures/cxx_extended_friend_declarations.cpp
 create mode 100644 Tests/CompileFeatures/cxx_extern_templates.cpp
 create mode 100644 Tests/CompileFeatures/cxx_final.cpp
 create mode 100644 Tests/CompileFeatures/cxx_func_identifier.cpp
 create mode 100644 Tests/CompileFeatures/cxx_generalized_initializers.cpp
 create mode 100644 Tests/CompileFeatures/cxx_inheriting_constructors.cpp
 create mode 100644 Tests/CompileFeatures/cxx_inline_namespaces.cpp
 create mode 100644 Tests/CompileFeatures/cxx_lambdas.cpp
 create mode 100644 Tests/CompileFeatures/cxx_local_type_template_args.cpp
 create mode 100644 Tests/CompileFeatures/cxx_long_long_type.cpp
 create mode 100644 Tests/CompileFeatures/cxx_noexcept.cpp
 create mode 100644 Tests/CompileFeatures/cxx_nonstatic_member_init.cpp
 create mode 100644 Tests/CompileFeatures/cxx_nullptr.cpp
 create mode 100644 Tests/CompileFeatures/cxx_override.cpp
 create mode 100644 Tests/CompileFeatures/cxx_range_for.cpp
 create mode 100644 Tests/CompileFeatures/cxx_raw_string_literals.cpp
 create mode 100644 Tests/CompileFeatures/cxx_reference_qualified_functions.cpp
 create mode 100644 Tests/CompileFeatures/cxx_right_angle_brackets.cpp
 create mode 100644 Tests/CompileFeatures/cxx_rvalue_references.cpp
 create mode 100644 Tests/CompileFeatures/cxx_sizeof_member.cpp
 create mode 100644 Tests/CompileFeatures/cxx_static_assert.cpp
 create mode 100644 Tests/CompileFeatures/cxx_strong_enums.cpp
 create mode 100644 Tests/CompileFeatures/cxx_thread_local.cpp
 create mode 100644 Tests/CompileFeatures/cxx_trailing_return_types.cpp
 create mode 100644 Tests/CompileFeatures/cxx_unicode_literals.cpp
 create mode 100644 Tests/CompileFeatures/cxx_uniform_initialization.cpp
 create mode 100644 Tests/CompileFeatures/cxx_unrestricted_unions.cpp
 create mode 100644 Tests/CompileFeatures/cxx_user_literals.cpp
 create mode 100644 Tests/CompileFeatures/cxx_variadic_macros.cpp
 create mode 100644 Tests/CompileFeatures/cxx_variadic_templates.cpp


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list