From e986b70981b3177795c9a6b499ab4c64540597a9 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sat, 22 Oct 2016 10:04:36 +0100 Subject: [PATCH] Stricter iterator types --- include/boost/unordered/detail/map.hpp | 18 ++++++++++++++++++ include/boost/unordered/detail/set.hpp | 18 ++++++++++++++++++ include/boost/unordered/detail/table.hpp | 13 ++++--------- include/boost/unordered/unordered_set.hpp | 8 ++++---- 4 files changed, 44 insertions(+), 13 deletions(-) diff --git a/include/boost/unordered/detail/map.hpp b/include/boost/unordered/detail/map.hpp index 22f8e633..14253ef4 100644 --- a/include/boost/unordered/detail/map.hpp +++ b/include/boost/unordered/detail/map.hpp @@ -31,6 +31,15 @@ namespace boost { namespace unordered { namespace detail { extractor; typedef typename boost::unordered::detail::pick_policy::type policy; + + typedef boost::unordered::iterator_detail:: + iterator iterator; + typedef boost::unordered::iterator_detail:: + c_iterator c_iterator; + typedef boost::unordered::iterator_detail:: + l_iterator l_iterator; + typedef boost::unordered::iterator_detail:: + cl_iterator cl_iterator; }; template @@ -56,6 +65,15 @@ namespace boost { namespace unordered { namespace detail { extractor; typedef typename boost::unordered::detail::pick_policy::type policy; + + typedef boost::unordered::iterator_detail:: + iterator iterator; + typedef boost::unordered::iterator_detail:: + c_iterator c_iterator; + typedef boost::unordered::iterator_detail:: + l_iterator l_iterator; + typedef boost::unordered::iterator_detail:: + cl_iterator cl_iterator; }; }}} diff --git a/include/boost/unordered/detail/set.hpp b/include/boost/unordered/detail/set.hpp index 3ed9dde0..ccbc4c99 100644 --- a/include/boost/unordered/detail/set.hpp +++ b/include/boost/unordered/detail/set.hpp @@ -29,6 +29,15 @@ namespace boost { namespace unordered { namespace detail { typedef boost::unordered::detail::set_extractor extractor; typedef typename boost::unordered::detail::pick_policy::type policy; + + typedef boost::unordered::iterator_detail:: + c_iterator iterator; + typedef boost::unordered::iterator_detail:: + c_iterator c_iterator; + typedef boost::unordered::iterator_detail:: + cl_iterator l_iterator; + typedef boost::unordered::iterator_detail:: + cl_iterator cl_iterator; }; template @@ -53,5 +62,14 @@ namespace boost { namespace unordered { namespace detail { typedef boost::unordered::detail::set_extractor extractor; typedef typename boost::unordered::detail::pick_policy::type policy; + + typedef boost::unordered::iterator_detail:: + c_iterator iterator; + typedef boost::unordered::iterator_detail:: + c_iterator c_iterator; + typedef boost::unordered::iterator_detail:: + cl_iterator l_iterator; + typedef boost::unordered::iterator_detail:: + cl_iterator cl_iterator; }; }}} diff --git a/include/boost/unordered/detail/table.hpp b/include/boost/unordered/detail/table.hpp index 438feab7..65c06908 100644 --- a/include/boost/unordered/detail/table.hpp +++ b/include/boost/unordered/detail/table.hpp @@ -84,6 +84,10 @@ namespace boost { namespace unordered { namespace detail { typedef typename Types::table table_impl; typedef typename Types::link_pointer link_pointer; typedef typename Types::policy policy; + typedef typename Types::iterator iterator; + typedef typename Types::c_iterator c_iterator; + typedef typename Types::l_iterator l_iterator; + typedef typename Types::cl_iterator cl_iterator; typedef boost::unordered::detail::functions< typename Types::hasher, @@ -110,15 +114,6 @@ namespace boost { namespace unordered { namespace detail { typedef boost::unordered::detail::node_tmp node_tmp; - typedef boost::unordered::iterator_detail:: - iterator iterator; - typedef boost::unordered::iterator_detail:: - c_iterator c_iterator; - typedef boost::unordered::iterator_detail:: - l_iterator l_iterator; - typedef boost::unordered::iterator_detail:: - cl_iterator cl_iterator; - //////////////////////////////////////////////////////////////////////// // Members diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index be17c399..ea411f6d 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -67,9 +67,9 @@ namespace unordered typedef std::ptrdiff_t difference_type; typedef typename table::cl_iterator const_local_iterator; - typedef typename table::cl_iterator local_iterator; + typedef typename table::l_iterator local_iterator; typedef typename table::c_iterator const_iterator; - typedef typename table::c_iterator iterator; + typedef typename table::iterator iterator; private: @@ -536,9 +536,9 @@ namespace unordered typedef std::ptrdiff_t difference_type; typedef typename table::cl_iterator const_local_iterator; - typedef typename table::cl_iterator local_iterator; + typedef typename table::l_iterator local_iterator; typedef typename table::c_iterator const_iterator; - typedef typename table::c_iterator iterator; + typedef typename table::iterator iterator; private: