Features: Add cxx_inline_namespaces.

This commit is contained in:
Stephen Kelly 2014-04-06 10:07:19 +02:00
parent f9d04a96b5
commit 300ce2481e
4 changed files with 33 additions and 0 deletions

View File

@ -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 .. _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`` ``cxx_lambdas``
Lambda functions, as defined in N2927_. Lambda functions, as defined in N2927_.

View File

@ -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_defaulted_functions "${GNU44_CXX11}")
set(_cmake_feature_test_cxx_deleted_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_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_strong_enums "${GNU44_CXX11}")
set(_cmake_feature_test_cxx_trailing_return_types "${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_unicode_literals "${GNU44_CXX11}")

View File

@ -57,6 +57,7 @@
F(cxx_final) \ F(cxx_final) \
F(cxx_generalized_initializers) \ F(cxx_generalized_initializers) \
F(cxx_inheriting_constructors) \ F(cxx_inheriting_constructors) \
F(cxx_inline_namespaces) \
F(cxx_lambdas) \ F(cxx_lambdas) \
F(cxx_noexcept) \ F(cxx_noexcept) \
F(cxx_nonstatic_member_init) \ F(cxx_nonstatic_member_init) \

View File

@ -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
}