Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
iterator_facade.hpp File Reference
#include <boost/config.hpp>
#include <boost/iterator.hpp>
#include <boost/iterator/interoperable.hpp>
#include <boost/iterator/iterator_traits.hpp>
#include <boost/iterator/iterator_categories.hpp>
#include <boost/iterator/detail/facade_iterator_category.hpp>
#include <boost/iterator/detail/enable_if.hpp>
#include <boost/static_assert.hpp>
#include <boost/utility/addressof.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_pointer.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/type_traits/is_pod.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/if.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/and.hpp>
#include <boost/mpl/not.hpp>
#include <boost/mpl/always.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/iterator/detail/config_def.hpp>
#include <boost/iterator/detail/config_undef.hpp>
Include dependency graph for iterator_facade.hpp:
This graph shows which files directly or indirectly include this file:

Classes

class  boost::iterators::iterator_facade< Derived, Value, CategoryOrTraversal, Reference, Difference >
 
struct  boost::iterators::detail::always_bool2
 
struct  boost::iterators::detail::always_bool2::apply< T, U >
 
struct  boost::iterators::detail::is_traversal_at_least< CategoryOrTraversal, Required >
 
struct  boost::iterators::detail::enable_if_interoperable< Facade1, Facade2, Return >
 
struct  boost::iterators::detail::enable_if_interoperable_and_random_access_traversal< Facade1, Facade2, Return >
 
struct  boost::iterators::detail::iterator_facade_types< ValueParam, CategoryOrTraversal, Reference, Difference >
 
class  boost::iterators::detail::postfix_increment_proxy< Iterator >
 
class  boost::iterators::detail::writable_postfix_increment_proxy< Iterator >
 
struct  boost::iterators::detail::is_non_proxy_reference< Reference, Value >
 
struct  boost::iterators::detail::postfix_increment_result< Iterator, Value, Reference, CategoryOrTraversal >
 
struct  boost::iterators::detail::operator_arrow_dispatch< Reference, Pointer >
 
struct  boost::iterators::detail::operator_arrow_dispatch< Reference, Pointer >::proxy
 
struct  boost::iterators::detail::operator_arrow_dispatch< T &, Pointer >
 
class  boost::iterators::detail::operator_brackets_proxy< Iterator >
 
struct  boost::iterators::detail::use_operator_brackets_proxy< ValueType, Reference >
 
struct  boost::iterators::detail::operator_brackets_result< Iterator, Value, Reference >
 
struct  boost::iterators::detail::choose_difference_type
 
struct  boost::iterators::detail::choose_difference_type::apply< I1, I2 >
 
singleton  boost::iterators::detail::iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, IsBidirectionalTraversal, IsRandomAccessTraversal >
 
class  boost::iterators::iterator_core_access
 
class  boost::iterators::detail::iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, false, false >
 
class  boost::iterators::detail::iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, false >
 
class  boost::iterators::detail::iterator_facade_base< Derived, Value, CategoryOrTraversal, Reference, Difference, true, true >
 
class  boost::iterators::iterator_facade< Derived, Value, CategoryOrTraversal, Reference, Difference >
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::iterators
 
 boost::iterators::detail
 

Macros

#define BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, enabler)
 
#define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type)   BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, boost::iterators::detail::enable_if_interoperable)
 
#define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(prefix, op, result_type)   BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, boost::iterators::detail::enable_if_interoperable_and_random_access_traversal)
 
#define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix, args)
 
#define BOOST_ITERATOR_FACADE_RELATION(op)   BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, boost::iterators::detail::always_bool2);
 
#define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION(op)   BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(friend,op, boost::iterators::detail::always_bool2);
 
#define BOOST_ITERATOR_CONVERTIBLE(a, b)   is_convertible<a,b>()
 
#define BOOST_ITERATOR_FACADE_INTEROP(op, result_type, return_prefix, base_op)
 
#define BOOST_ITERATOR_FACADE_RELATION(op, return_prefix, base_op)
 
#define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS(op, result_type, return_prefix, base_op)
 
#define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION(op, return_prefix, base_op)
 
#define BOOST_ITERATOR_FACADE_PLUS(args)
 

Functions

template<class Iterator >
operator_brackets_proxy< Iterator > boost::iterators::detail::make_operator_brackets_result (Iterator const &iter, mpl::true_)
 
template<class Iterator >
Iterator::value_type boost::iterators::detail::make_operator_brackets_result (Iterator const &iter, mpl::false_)
 
template<class I , class V , class TC , class R , class D >
boost::iterators::detail::postfix_increment_result
< I, V, R, TC >::type 
boost::iterators::operator++ (iterator_facade< I, V, TC, R, D > &i, int)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::always_bool2,Derived1,
Derived2 >::type >::type 
boost::iterators::operator== (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::always_bool2,Derived1,
Derived2 >::type >::type 
boost::iterators::operator!= (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable_and_random_access_traversal
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::always_bool2,Derived1,
Derived2 >::type >::type 
boost::iterators::operator< (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable_and_random_access_traversal
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::always_bool2,Derived1,
Derived2 >::type >::type 
boost::iterators::operator> (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable_and_random_access_traversal
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::always_bool2,Derived1,
Derived2 >::type >::type 
boost::iterators::operator<= (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable_and_random_access_traversal
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::always_bool2,Derived1,
Derived2 >::type >::type 
boost::iterators::operator>= (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived1 , class V1 , class TC1 , class Reference1 , class Difference1 , class Derived2 , class V2 , class TC2 , class Reference2 , class Difference2 >
boost::iterators::detail::enable_if_interoperable_and_random_access_traversal
< Derived1, Derived2, typename
mpl::apply2
< boost::iterators::detail::choose_difference_type,Derived1,
Derived2 >::type >::type 
boost::iterators::operator- (iterator_facade< Derived1, V1, TC1, Reference1, Difference1 > const &lhs, iterator_facade< Derived2, V2, TC2, Reference2, Difference2 > const &rhs)
 
template<class Derived , class V , class TC , class R , class D >
boost::iterators::enable_if
< boost::iterators::detail::is_traversal_at_least
< TC,
boost::iterators::random_access_traversal_tag >
, Derived >::type 
boost::iterators::operator+ (iterator_facade< Derived, V, TC, R, D > const &i, typename Derived::difference_type n)
 
template<class Derived , class V , class TC , class R , class D >
boost::iterators::enable_if
< boost::iterators::detail::is_traversal_at_least
< TC,
boost::iterators::random_access_traversal_tag >
, Derived >::type 
boost::iterators::operator+ (typename Derived::difference_type n, iterator_facade< Derived, V, TC, R, D > const &i)
 

Macro Definition Documentation

#define BOOST_ITERATOR_CONVERTIBLE (   a,
 
)    is_convertible<a,b>()
#define BOOST_ITERATOR_FACADE_INTEROP (   op,
  result_type,
  return_prefix,
  base_op 
)
Value:
{ \
/* For those compilers that do not support enable_if */ \
)); \
return_prefix iterator_core_access::base_op( \
*static_cast<Derived1 const*>(&lhs) \
, *static_cast<Derived2 const*>(&rhs) \
, BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \
); \
}
#define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type)
Definition: iterator_facade.hpp:465
typed_value< T > * value()
Creates a typed_value instance.
#define BOOST_STATIC_ASSERT(...)
Definition: static_assert.hpp:78
result_traits< R, F >::type result_type
Definition: bind_template.hpp:15
#define BOOST_ITERATOR_CONVERTIBLE(a, b)
Definition: iterator_facade.hpp:865
#define BOOST_ITERATOR_FACADE_INTEROP_HEAD (   prefix,
  op,
  result_type 
)    BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, boost::iterators::detail::enable_if_interoperable)
#define BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL (   prefix,
  op,
  result_type,
  enabler 
)
Value:
template < \
class Derived1, class V1, class TC1, class Reference1, class Difference1 \
, class Derived2, class V2, class TC2, class Reference2, class Difference2 \
> \
prefix typename enabler< \
Derived1, Derived2 \
>::type \
operator op( \
iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
, iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS (   op,
  result_type,
  return_prefix,
  base_op 
)
Value:
{ \
/* For those compilers that do not support enable_if */ \
)); \
return_prefix iterator_core_access::base_op( \
*static_cast<Derived1 const*>(&lhs) \
, *static_cast<Derived2 const*>(&rhs) \
, BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \
); \
}
#define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(prefix, op, result_type)
Definition: iterator_facade.hpp:468
Definition: iterator_facade.hpp:64
typed_value< T > * value()
Creates a typed_value instance.
#define BOOST_STATIC_ASSERT(...)
Definition: static_assert.hpp:78
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
result_traits< R, F >::type result_type
Definition: bind_template.hpp:15
#define BOOST_ITERATOR_CONVERTIBLE(a, b)
Definition: iterator_facade.hpp:865
#define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD (   prefix,
  op,
  result_type 
)    BOOST_ITERATOR_FACADE_INTEROP_HEAD_IMPL(prefix, op, result_type, boost::iterators::detail::enable_if_interoperable_and_random_access_traversal)
#define BOOST_ITERATOR_FACADE_PLUS (   args)
Value:
{ \
Derived tmp(static_cast<Derived const&>(i)); \
return tmp += n; \
}
#define n
Definition: register_functions_iterate.hpp:7
#define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix, args)
Definition: iterator_facade.hpp:471
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
unsigned i
Definition: bitwise.hpp:313
#define BOOST_ITERATOR_FACADE_PLUS_HEAD (   prefix,
  args 
)
Value:
template <class Derived, class V, class TC, class R, class D> \
prefix typename boost::iterators::enable_if< \
boost::iterators::detail::is_traversal_at_least< TC, boost::iterators::random_access_traversal_tag >, \
Derived \
>::type operator+ args
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION (   op)    BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(friend,op, boost::iterators::detail::always_bool2);
#define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION (   op,
  return_prefix,
  base_op 
)
Value:
op \
, return_prefix \
, base_op \
)
Definition: iterator_facade.hpp:53
#define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS(op, result_type, return_prefix, base_op)
Definition: iterator_facade.hpp:896
#define BOOST_ITERATOR_FACADE_RELATION (   op)    BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, boost::iterators::detail::always_bool2);
#define BOOST_ITERATOR_FACADE_RELATION (   op,
  return_prefix,
  base_op 
)
Value:
op \
, return_prefix \
, base_op \
)
Definition: iterator_facade.hpp:53
#define BOOST_ITERATOR_FACADE_INTEROP(op, result_type, return_prefix, base_op)
Definition: iterator_facade.hpp:868