BOOST_NO_CXX11_RVALUE_REFERENCES
diff --git a/doc/html/index.html b/doc/html/index.html
index cf18f912..8eaa462b 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -951,7 +951,7 @@
-Last revised: December 12, 2013 at 19:29:48 GMT |
+Last revised: May 28, 2014 at 15:31:56 GMT |
|
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
index f15cf425..9bb3fa30 100644
--- a/doc/macro_reference.qbk
+++ b/doc/macro_reference.qbk
@@ -664,6 +664,10 @@ range-based for statements.
[[`BOOST_NO_CXX11_RAW_LITERALS`][The compiler does not support
raw string literals.
]]
+[[`BOOST_NO_CXX11_REF_QUALIFIERS`][The compiler does not support
+ref-qualifiers on member functions as described in
+[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm N2439].
+]]
[[`BOOST_NO_CXX11_RVALUE_REFERENCES`][The compiler does not support
r-value references.
]]
diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp
index c2a735f5..6a178242 100644
--- a/include/boost/config/compiler/clang.hpp
+++ b/include/boost/config/compiler/clang.hpp
@@ -140,6 +140,10 @@
# define BOOST_NO_CXX11_RAW_LITERALS
#endif
+#if !__has_feature(cxx_reference_qualified_functions)
+# define BOOST_NO_CXX11_REF_QUALIFIERS
+#endif
+
#if !__has_feature(cxx_generalized_initializers)
# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
#endif
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index c560d6ae..ef6b07e2 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -232,6 +232,7 @@
//
#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40801) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
# define BOOST_NO_CXX11_DECLTYPE_N3276
+# define BOOST_NO_CXX11_REF_QUALIFIERS
#endif
#ifndef BOOST_COMPILER
diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp
index 3f0eaa18..cbc9422f 100644
--- a/include/boost/config/compiler/intel.hpp
+++ b/include/boost/config/compiler/intel.hpp
@@ -265,6 +265,7 @@ template<> struct assert_intrinsic_wchar_t {};
# undef BOOST_NO_CXX11_HDR_THREAD
# undef BOOST_NO_CXX11_CHAR32_T
# undef BOOST_NO_CXX11_CHAR16_T
+# undef BOOST_NO_CXX11_REF_QUALIFIERS
#endif
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310)
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
index fb30fc12..842f0865 100644
--- a/include/boost/config/compiler/visualc.hpp
+++ b/include/boost/config/compiler/visualc.hpp
@@ -173,6 +173,7 @@
#define BOOST_NO_CXX11_CHAR32_T
#define BOOST_NO_CXX11_CONSTEXPR
#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_UNICODE_LITERALS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2
index bbc9c8c5..4eeafdb8 100644
--- a/test/all/Jamfile.v2
+++ b/test/all/Jamfile.v2
@@ -1,7 +1,7 @@
#
# Regression test Jamfile for boost configuration setup.
# *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Tue Feb 11 17:12:28 2014
+# This file was automatically generated on Wed May 28 17:13:04 2014
# by libs/config/tools/generate.cpp
# Copyright John Maddock.
# Use, modification and distribution are subject to the
@@ -301,6 +301,9 @@ test-suite "BOOST_NO_CXX11_INLINE_NAMESPACES" :
test-suite "BOOST_NO_CXX11_NUMERIC_LIMITS" :
[ run ../no_cxx11_numeric_limits_pass.cpp ]
[ compile-fail ../no_cxx11_numeric_limits_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_REF_QUALIFIERS" :
+[ run ../no_cxx11_ref_qualifiers_pass.cpp ]
+[ compile-fail ../no_cxx11_ref_qualifiers_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_SMART_PTR" :
[ run ../no_cxx11_smart_ptr_pass.cpp ]
[ compile-fail ../no_cxx11_smart_ptr_fail.cpp ] ;
diff --git a/test/boost_no_cxx11_ref_qualifiers.ipp b/test/boost_no_cxx11_ref_qualifiers.ipp
new file mode 100644
index 00000000..4cd8441c
--- /dev/null
+++ b/test/boost_no_cxx11_ref_qualifiers.ipp
@@ -0,0 +1,33 @@
+// (C) Copyright Andrzej Krzemienski 2014
+
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for more information.
+
+// MACRO: BOOST_NO_CXX11_REF_QUALIFIERS
+// TITLE: C++11 ref-qualifiers on member functions.
+// DESCRIPTION: The compiler does not support the C++11 ref-qualifiers on member functions as described in N2439.
+
+namespace boost_no_cxx11_ref_qualifiers {
+
+struct G
+{
+ char get() & { return 'l'; }
+ char get() && { return 'r'; }
+ char get() const& { return 'c'; }
+};
+
+int test()
+{
+ G m;
+ const G c;
+
+ if (m.get() != 'l') return 1;
+ if (c.get() != 'c') return 1;
+ if (G().get() != 'r') return 1;
+ return 0;
+}
+
+}
diff --git a/test/config_info.cpp b/test/config_info.cpp
index 5a174c09..4424a0a4 100644
--- a/test/config_info.cpp
+++ b/test/config_info.cpp
@@ -1036,6 +1036,7 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_CXX11_NUMERIC_LIMITS);
PRINT_MACRO(BOOST_NO_CXX11_RANGE_BASED_FOR);
PRINT_MACRO(BOOST_NO_CXX11_RAW_LITERALS);
+ PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS);
PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES);
PRINT_MACRO(BOOST_NO_CXX11_SCOPED_ENUMS);
PRINT_MACRO(BOOST_NO_CXX11_SMART_PTR);
@@ -1117,6 +1118,7 @@ void print_boost_macros()
+
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
diff --git a/test/config_test.cpp b/test/config_test.cpp
index 9bc6c545..8fec16cc 100644
--- a/test/config_test.cpp
+++ b/test/config_test.cpp
@@ -1,4 +1,4 @@
-// This file was automatically generated on Tue Feb 11 17:12:28 2014
+// This file was automatically generated on Wed May 28 17:13:04 2014
// by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the
@@ -227,6 +227,11 @@ namespace boost_no_cxx11_inline_namespaces = empty_boost;
#else
namespace boost_no_cxx11_numeric_limits = empty_boost;
#endif
+#ifndef BOOST_NO_CXX11_REF_QUALIFIERS
+#include "boost_no_cxx11_ref_qualifiers.ipp"
+#else
+namespace boost_no_cxx11_ref_qualifiers = empty_boost;
+#endif
#ifndef BOOST_NO_CXX11_SMART_PTR
#include "boost_no_cxx11_smart_ptr.ipp"
#else
@@ -1386,6 +1391,11 @@ int main( int, char *[] )
std::cerr << "Failed test for BOOST_NO_CXX11_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count;
}
+ if(0 != boost_no_cxx11_ref_qualifiers::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_REF_QUALIFIERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
if(0 != boost_no_cxx11_smart_ptr::test())
{
std::cerr << "Failed test for BOOST_NO_CXX11_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl;
diff --git a/test/no_cxx11_ref_qualifiers_fail.cpp b/test/no_cxx11_ref_qualifiers_fail.cpp
new file mode 100644
index 00000000..413ca8e9
--- /dev/null
+++ b/test/no_cxx11_ref_qualifiers_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed May 28 17:13:04 2014
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
+
+// Test file for macro BOOST_NO_CXX11_REF_QUALIFIERS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_REF_QUALIFIERS should not be defined.
+// See file boost_no_cxx11_ref_qualifiers.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include
+#include "test.hpp"
+
+#ifdef BOOST_NO_CXX11_REF_QUALIFIERS
+#include "boost_no_cxx11_ref_qualifiers.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_ref_qualifiers::test();
+}
+
diff --git a/test/no_cxx11_ref_qualifiers_pass.cpp b/test/no_cxx11_ref_qualifiers_pass.cpp
new file mode 100644
index 00000000..99216f60
--- /dev/null
+++ b/test/no_cxx11_ref_qualifiers_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed May 28 17:13:04 2014
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
+
+// Test file for macro BOOST_NO_CXX11_REF_QUALIFIERS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_REF_QUALIFIERS should be defined.
+// See file boost_no_cxx11_ref_qualifiers.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include
+#include "test.hpp"
+
+#ifndef BOOST_NO_CXX11_REF_QUALIFIERS
+#include "boost_no_cxx11_ref_qualifiers.ipp"
+#else
+namespace boost_no_cxx11_ref_qualifiers = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_ref_qualifiers::test();
+}
+
|