diff --git a/include/boost/unordered/detail/buckets.hpp b/include/boost/unordered/detail/buckets.hpp index fd038b7b..7de4317b 100644 --- a/include/boost/unordered/detail/buckets.hpp +++ b/include/boost/unordered/detail/buckets.hpp @@ -60,7 +60,7 @@ namespace boost { namespace unordered { namespace iterator_detail { std::forward_iterator_tag, typename Node::value_type, std::ptrdiff_t, - typename Node::node_pointer, + typename Node::value_type*, typename Node::value_type&> { #if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) @@ -120,7 +120,7 @@ namespace boost { namespace unordered { namespace iterator_detail { std::forward_iterator_tag, typename Node::value_type, std::ptrdiff_t, - ConstNodePointer, + typename Node::value_type const*, typename Node::value_type const&> { friend struct boost::unordered::iterator_detail::l_iterator @@ -188,7 +188,7 @@ namespace boost { namespace unordered { namespace iterator_detail { std::forward_iterator_tag, typename Node::value_type, std::ptrdiff_t, - typename Node::node_pointer, + typename Node::value_type*, typename Node::value_type&> { #if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) @@ -252,7 +252,7 @@ namespace boost { namespace unordered { namespace iterator_detail { std::forward_iterator_tag, typename Node::value_type, std::ptrdiff_t, - ConstNodePointer, + typename Node::value_type const*, typename Node::value_type const&> { friend struct boost::unordered::iterator_detail::iterator; diff --git a/test/unordered/compile_tests.hpp b/test/unordered/compile_tests.hpp index 02ef78aa..b48a6efd 100644 --- a/test/unordered/compile_tests.hpp +++ b/test/unordered/compile_tests.hpp @@ -180,6 +180,28 @@ void unordered_set_test(X&, Key const&) typedef BOOST_DEDUCED_TYPENAME X::key_type key_type; BOOST_STATIC_ASSERT((boost::is_same::value)); + + // iterator pointer / const_pointer_type + + typedef BOOST_DEDUCED_TYPENAME X::iterator iterator; + typedef BOOST_DEDUCED_TYPENAME X::const_iterator const_iterator; + typedef BOOST_DEDUCED_TYPENAME X::local_iterator local_iterator; + typedef BOOST_DEDUCED_TYPENAME X::const_local_iterator const_local_iterator; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type iterator_pointer; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type + const_iterator_pointer; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type local_iterator_pointer; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type + const_local_iterator_pointer; + + BOOST_STATIC_ASSERT((boost::is_same::value)); + BOOST_STATIC_ASSERT((boost::is_same::value)); + BOOST_STATIC_ASSERT((boost::is_same::value)); + BOOST_STATIC_ASSERT((boost::is_same::value)); } template @@ -191,6 +213,30 @@ void unordered_map_test(X& r, Key const& k, T const& v) BOOST_STATIC_ASSERT(( boost::is_same >::value)); + // iterator pointer / const_pointer_type + + typedef BOOST_DEDUCED_TYPENAME X::iterator iterator; + typedef BOOST_DEDUCED_TYPENAME X::const_iterator const_iterator; + typedef BOOST_DEDUCED_TYPENAME X::local_iterator local_iterator; + typedef BOOST_DEDUCED_TYPENAME X::const_local_iterator const_local_iterator; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type iterator_pointer; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type + const_iterator_pointer; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type local_iterator_pointer; + typedef BOOST_DEDUCED_TYPENAME + boost::iterator_pointer::type + const_local_iterator_pointer; + + BOOST_STATIC_ASSERT((boost::is_same::value)); + BOOST_STATIC_ASSERT((boost::is_same::value)); + BOOST_STATIC_ASSERT((boost::is_same::value)); + BOOST_STATIC_ASSERT((boost::is_same::value)); + + // Calling functions + r.insert(std::pair(k, v)); Key k_lvalue(k);