From 217c337233454a41b41176b43577ef534dd0fe97 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 10 Jan 2016 18:10:17 +0000 Subject: [PATCH] Fix result of add_reference. Also update tests. See https://svn.boost.org/trac/boost/ticket/11900. --- include/boost/type_traits/add_reference.hpp | 6 +++--- test/add_lvalue_reference_test.cpp | 7 ++++++- test/add_reference_test.cpp | 5 +++++ test/add_rvalue_reference_test.cpp | 5 +++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/include/boost/type_traits/add_reference.hpp b/include/boost/type_traits/add_reference.hpp index 526f259..3c91415 100644 --- a/include/boost/type_traits/add_reference.hpp +++ b/include/boost/type_traits/add_reference.hpp @@ -49,9 +49,9 @@ template struct add_reference // these full specialisations are always required: template <> struct add_reference { typedef void type; }; #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS -template <> struct add_reference { typedef void type; }; -template <> struct add_reference { typedef void type; }; -template <> struct add_reference { typedef void type; }; +template <> struct add_reference { typedef const void type; }; +template <> struct add_reference { typedef const volatile void type; }; +template <> struct add_reference { typedef volatile void type; }; #endif } // namespace boost diff --git a/test/add_lvalue_reference_test.cpp b/test/add_lvalue_reference_test.cpp index 1a9c1cb..0dd1af1 100644 --- a/test/add_lvalue_reference_test.cpp +++ b/test/add_lvalue_reference_test.cpp @@ -52,7 +52,12 @@ TT_TEST_BEGIN(add_lvalue_reference) add_lvalue_reference_test_13a(); #endif -TT_TEST_END + BOOST_CHECK_TYPE(tt::add_lvalue_reference::type, void); + BOOST_CHECK_TYPE(tt::add_lvalue_reference::type, const void); + BOOST_CHECK_TYPE(tt::add_lvalue_reference::type, const volatile void); + BOOST_CHECK_TYPE(tt::add_lvalue_reference::type, volatile void); + + TT_TEST_END diff --git a/test/add_reference_test.cpp b/test/add_reference_test.cpp index 458ceb5..35cf76c 100644 --- a/test/add_reference_test.cpp +++ b/test/add_reference_test.cpp @@ -52,6 +52,11 @@ TT_TEST_BEGIN(add_reference) add_reference_test_13a(); #endif + BOOST_CHECK_TYPE(tt::add_reference::type, void); + BOOST_CHECK_TYPE(tt::add_reference::type, const void); + BOOST_CHECK_TYPE(tt::add_reference::type, const volatile void); + BOOST_CHECK_TYPE(tt::add_reference::type, volatile void); + TT_TEST_END diff --git a/test/add_rvalue_reference_test.cpp b/test/add_rvalue_reference_test.cpp index 92c6cc8..caa2869 100644 --- a/test/add_rvalue_reference_test.cpp +++ b/test/add_rvalue_reference_test.cpp @@ -69,6 +69,11 @@ TT_TEST_BEGIN(add_rvalue_reference) add_rvalue_reference_test_13a(); #endif + BOOST_CHECK_TYPE(tt::add_rvalue_reference::type, void); + BOOST_CHECK_TYPE(tt::add_rvalue_reference::type, const void); + BOOST_CHECK_TYPE(tt::add_rvalue_reference::type, const volatile void); + BOOST_CHECK_TYPE(tt::add_rvalue_reference::type, volatile void); + TT_TEST_END