forked from boostorg/unordered
Remove dependency on iterator
This commit is contained in:
@ -15,7 +15,6 @@
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/core/no_exceptions_support.hpp>
|
||||
#include <boost/detail/select_type.hpp>
|
||||
#include <boost/iterator/iterator_categories.hpp>
|
||||
#include <boost/limits.hpp>
|
||||
#include <boost/move/move.hpp>
|
||||
#include <boost/predef.h>
|
||||
@ -33,8 +32,8 @@
|
||||
#include <boost/type_traits/add_lvalue_reference.hpp>
|
||||
#include <boost/type_traits/aligned_storage.hpp>
|
||||
#include <boost/type_traits/alignment_of.hpp>
|
||||
#include <boost/type_traits/is_base_of.hpp>
|
||||
#include <boost/type_traits/is_class.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/type_traits/is_empty.hpp>
|
||||
#include <boost/type_traits/is_nothrow_move_assignable.hpp>
|
||||
#include <boost/type_traits/is_nothrow_move_constructible.hpp>
|
||||
@ -244,9 +243,8 @@ namespace boost {
|
||||
// iterator SFINAE
|
||||
|
||||
template <typename I>
|
||||
struct is_forward
|
||||
: boost::is_convertible<typename boost::iterator_traversal<I>::type,
|
||||
boost::forward_traversal_tag>
|
||||
struct is_forward : boost::is_base_of<std::forward_iterator_tag,
|
||||
typename std::iterator_traits<I>::iterator_category>
|
||||
{
|
||||
};
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
#define BOOST_UNORDERED_TEST_HELPERS_INPUT_ITERATOR_HEADER
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/iterator/iterator_traits.hpp>
|
||||
#include <iterator>
|
||||
|
||||
namespace test {
|
||||
@ -28,12 +27,12 @@ namespace test {
|
||||
template <class Iterator>
|
||||
struct input_iterator_adaptor
|
||||
: public std::iterator<std::input_iterator_tag,
|
||||
BOOST_DEDUCED_TYPENAME boost::iterator_value<Iterator>::type,
|
||||
BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::value_type,
|
||||
std::ptrdiff_t,
|
||||
BOOST_DEDUCED_TYPENAME boost::iterator_pointer<Iterator>::type,
|
||||
BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::pointer,
|
||||
proxy<Iterator> >
|
||||
{
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<Iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::value_type
|
||||
value_type;
|
||||
|
||||
input_iterator_adaptor() : base_() {}
|
||||
@ -68,17 +67,17 @@ namespace test {
|
||||
|
||||
template <class Iterator>
|
||||
struct copy_iterator_adaptor
|
||||
: public std::iterator<
|
||||
BOOST_DEDUCED_TYPENAME boost::iterator_category<Iterator>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::iterator_value<Iterator>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::iterator_difference<Iterator>::type,
|
||||
BOOST_DEDUCED_TYPENAME boost::iterator_pointer<Iterator>::type,
|
||||
: public std::iterator<BOOST_DEDUCED_TYPENAME
|
||||
std::iterator_traits<Iterator>::iterator_category,
|
||||
BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::value_type,
|
||||
BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::difference_type,
|
||||
BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::pointer,
|
||||
proxy<Iterator> >
|
||||
{
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<Iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<Iterator>::value_type
|
||||
value_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_difference<Iterator>::type
|
||||
difference_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME
|
||||
std::iterator_traits<Iterator>::difference_type difference_type;
|
||||
|
||||
copy_iterator_adaptor() : base_() {}
|
||||
explicit copy_iterator_adaptor(Iterator const& it) : base_(it) {}
|
||||
|
@ -17,7 +17,6 @@
|
||||
#endif
|
||||
|
||||
#include "../helpers/check_return_type.hpp"
|
||||
#include <boost/iterator/iterator_traits.hpp>
|
||||
#include <boost/limits.hpp>
|
||||
#include <boost/predef.h>
|
||||
#include <boost/static_assert.hpp>
|
||||
@ -56,14 +55,14 @@ template <class X, class T> void container_test(X& r, T const&)
|
||||
typedef BOOST_DEDUCED_TYPENAME X::difference_type difference_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME X::size_type size_type;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::value_type
|
||||
iterator_value_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<const_iterator>::type
|
||||
const_iterator_value_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_difference<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME
|
||||
std::iterator_traits<const_iterator>::value_type const_iterator_value_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::difference_type
|
||||
iterator_difference_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_difference<
|
||||
const_iterator>::type const_iterator_difference_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_iterator>::difference_type const_iterator_difference_type;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME X::value_type value_type;
|
||||
typedef BOOST_DEDUCED_TYPENAME X::reference reference;
|
||||
@ -263,14 +262,14 @@ template <class X, class Key> void unordered_set_test(X& r, Key const&)
|
||||
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<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::pointer
|
||||
iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<const_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<const_iterator>::pointer
|
||||
const_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<local_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<local_iterator>::pointer
|
||||
local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<
|
||||
const_local_iterator>::type const_local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_local_iterator>::pointer const_local_iterator_pointer;
|
||||
|
||||
BOOST_STATIC_ASSERT(
|
||||
(boost::is_same<value_type const*, iterator_pointer>::value));
|
||||
@ -309,14 +308,14 @@ void unordered_map_test(X& r, Key const& k, T const& v)
|
||||
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<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::pointer
|
||||
iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<const_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<const_iterator>::pointer
|
||||
const_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<local_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<local_iterator>::pointer
|
||||
local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<
|
||||
const_local_iterator>::type const_local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_local_iterator>::pointer const_local_iterator_pointer;
|
||||
|
||||
BOOST_STATIC_ASSERT((boost::is_same<value_type*, iterator_pointer>::value));
|
||||
BOOST_STATIC_ASSERT(
|
||||
@ -482,41 +481,41 @@ void unordered_test(X& x, Key& k, Hash& hf, Pred& eq)
|
||||
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::BOOST_ITERATOR_CATEGORY<iterator>::type
|
||||
iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_difference<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME
|
||||
std::iterator_traits<iterator>::iterator_category iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::difference_type
|
||||
iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::pointer
|
||||
iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<iterator>::reference
|
||||
iterator_reference;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::BOOST_ITERATOR_CATEGORY<
|
||||
local_iterator>::type local_iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME
|
||||
boost::iterator_difference<local_iterator>::type local_iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<local_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
local_iterator>::iterator_category local_iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
local_iterator>::difference_type local_iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<local_iterator>::pointer
|
||||
local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<local_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<local_iterator>::reference
|
||||
local_iterator_reference;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::BOOST_ITERATOR_CATEGORY<
|
||||
const_iterator>::type const_iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME
|
||||
boost::iterator_difference<const_iterator>::type const_iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<const_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_iterator>::iterator_category const_iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_iterator>::difference_type const_iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<const_iterator>::pointer
|
||||
const_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<const_iterator>::type
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<const_iterator>::reference
|
||||
const_iterator_reference;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::BOOST_ITERATOR_CATEGORY<
|
||||
const_local_iterator>::type const_local_iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_difference<
|
||||
const_local_iterator>::type const_local_iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_pointer<
|
||||
const_local_iterator>::type const_local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<
|
||||
const_local_iterator>::type const_local_iterator_reference;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_local_iterator>::iterator_category const_local_iterator_category;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_local_iterator>::difference_type const_local_iterator_difference;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_local_iterator>::pointer const_local_iterator_pointer;
|
||||
typedef BOOST_DEDUCED_TYPENAME std::iterator_traits<
|
||||
const_local_iterator>::reference const_local_iterator_reference;
|
||||
typedef BOOST_DEDUCED_TYPENAME X::allocator_type allocator_type;
|
||||
|
||||
BOOST_STATIC_ASSERT((boost::is_same<Key, key_type>::value));
|
||||
|
Reference in New Issue
Block a user