diff --git a/include/boost/unordered/detail/implementation.hpp b/include/boost/unordered/detail/implementation.hpp index 546bd7fa..44bff527 100644 --- a/include/boost/unordered/detail/implementation.hpp +++ b/include/boost/unordered/detail/implementation.hpp @@ -2260,6 +2260,7 @@ namespace boost { std::size_t bucket_count_; public: + typedef typename Node::value_type element_type; typedef typename Node::value_type value_type; typedef value_type* pointer; typedef value_type& reference; @@ -2316,6 +2317,7 @@ namespace boost { std::size_t bucket_count_; public: + typedef typename Node::value_type const element_type; typedef typename Node::value_type value_type; typedef value_type const* pointer; typedef value_type const& reference; @@ -2384,6 +2386,7 @@ namespace boost { node_pointer node_; public: + typedef typename Node::value_type element_type; typedef typename Node::value_type value_type; typedef value_type* pointer; typedef value_type& reference; @@ -2439,6 +2442,7 @@ namespace boost { node_pointer node_; public: + typedef typename Node::value_type const element_type; typedef typename Node::value_type value_type; typedef value_type const* pointer; typedef value_type const& reference; diff --git a/test/unordered/compile_tests.hpp b/test/unordered/compile_tests.hpp index c3aa9a87..588414ec 100644 --- a/test/unordered/compile_tests.hpp +++ b/test/unordered/compile_tests.hpp @@ -18,6 +18,7 @@ #include "../helpers/check_return_type.hpp" #include +#include #include #include #include @@ -280,6 +281,42 @@ template void unordered_set_test(X& r, Key const&) BOOST_STATIC_ASSERT( (boost::is_same::value)); + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + typedef BOOST_DEDUCED_TYPENAME X::node_type node_type; typedef BOOST_DEDUCED_TYPENAME node_type::value_type node_value_type; BOOST_STATIC_ASSERT((boost::is_same::value)); @@ -325,6 +362,42 @@ void unordered_map_test(X& r, Key const& k, T const& v) BOOST_STATIC_ASSERT( (boost::is_same::value)); + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + + // pointer_traits + + BOOST_STATIC_ASSERT((boost::is_same::pointer>::value)); + BOOST_STATIC_ASSERT((boost::is_same::element_type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::difference_type>::value)); + typedef BOOST_DEDUCED_TYPENAME X::node_type node_type; typedef BOOST_DEDUCED_TYPENAME node_type::key_type node_key_type; typedef BOOST_DEDUCED_TYPENAME node_type::mapped_type node_mapped_type;