adapted_iterator_traits Struct Template Reference
[Iterators Library]

#include <stlsoft/iterators/adapted_iterator_traits.hpp>

List of all members.


Detailed Description

template<typename I>
struct stlsoft::adapted_iterator_traits< I >

Traits for adapted_iterator_traits.

Public Types

enum  { IS_DINKUMWARE_OLD_FORM }
enum  {
  REF_CAT_IS_VOID = 0 != is_same_type<value_type,
  value = (0 == IS_DINKUMWARE_OLD_FORM)
}
enum  {
  REF_CAT_IS_BVT = 0 == REF_CAT_IS_VOID && 0 != is_same_type<pointer,
  value = (0 == IS_DINKUMWARE_OLD_FORM)
}
typedef I::iterator_category iterator_category
 The iterator category.
typedef I::value_type value_type
 The value type.
typedef select_first_type_if
< typename
typefixer::fixer_difference_type
< I,
HAS_MEMBER_DIFFERENCE_TYPE >
::difference_type,
ss_ptrdiff_t,
HAS_MEMBER_DIFFERENCE_TYPE >
::type 
difference_type
 The difference type.
typedef select_first_type_if
< putative_pointer_, void,
HAS_MEMBER_POINTER||IS_DINKUMWARE_OLD_FORM >
::type 
pointer
 The pointer type.
typedef select_first_type_if
< putative_reference_, void,
HAS_MEMBER_REFERENCE||IS_DINKUMWARE_OLD_FORM >
::type 
reference
 The reference type.
typedef select_first_type_if
< void, pointer_base_type_
const *, REF_CAT_IS_VOID||REF_CAT_IS_BVT >
::type 
const_pointer
 The const_pointer type.
typedef select_first_type_if
< void, typename add_const_ref
< reference_base_type_ >::type,
REF_CAT_IS_VOID||REF_CAT_IS_BVT >
::type 
const_reference
 The const_reference type.
typedef select_first_type_if
< value_type, reference,
REF_CAT_IS_BVT >::type 
effective_reference
 The effective reference type.
typedef select_first_type_if
< typename add_const
< value_type >::type,
const_reference,
REF_CAT_IS_BVT >::type 
effective_const_reference
 The effective const_reference type.
typedef select_first_type_if
< void, pointer,
REF_CAT_IS_BVT >::type 
effective_pointer
 The effective pointer type.
typedef select_first_type_if
< void, const_pointer,
REF_CAT_IS_BVT >::type 
effective_const_pointer
 The effective const_pointer type.

Static Protected Member Functions

static void constraints ()

Member Typedef Documentation

typedef I::iterator_category iterator_category

The iterator category.

This is simply the member iterator_category of the adapted iterator type

typedef I::value_type value_type

The value type.

This is simply the member value_type of the adapted iterator type

typedef select_first_type_if< typename typefixer::fixer_difference_type<I, HAS_MEMBER_DIFFERENCE_TYPE>::difference_type , ss_ptrdiff_t , HAS_MEMBER_DIFFERENCE_TYPE >::type difference_type

The difference type.

This is the member value_type of the adapted iterator type, if it is defined, or ptrdiff_t if not.

typedef select_first_type_if<putative_pointer_ , void , HAS_MEMBER_POINTER || IS_DINKUMWARE_OLD_FORM >::type pointer

The pointer type.

This is the member pointer of the adapted iterator type, if it is defined. If not, it is defined to be void, so as to prevent any dangerous use of it. This will likely act as a compile-time constraint to prevent the base iterator type being adapted (which is nice).

typedef select_first_type_if<putative_reference_ , void , HAS_MEMBER_REFERENCE || IS_DINKUMWARE_OLD_FORM >::type reference

The reference type.

This is the member reference of the adapted iterator type, if it is defined. If not, it is defined to be void, so as to prevent any dangerous use of it. This will likely act as a compile-time constraint to prevent the base iterator type being adapted (which is nice).

typedef select_first_type_if<void , pointer_base_type_ const* , REF_CAT_IS_VOID || REF_CAT_IS_BVT >::type const_pointer

The const_pointer type.

This is either void, if the iterator element reference category is Void or BVT, otherwise it's "<i>value_type</i>" const*, where "<i>value_type</i>" is the deduced value type obtained from pointer.

typedef select_first_type_if<void , typename add_const_ref<reference_base_type_>::type , REF_CAT_IS_VOID || REF_CAT_IS_BVT >::type const_reference

The const_reference type.

This is either void, if the iterator element reference category is Void or BVT, otherwise it's "<i>value_type</i>" const*, where "<i>value_type</i>" is the deduced value type obtained from reference.

typedef select_first_type_if<value_type , reference , REF_CAT_IS_BVT >::type effective_reference

The effective reference type.

If the base iterator element reference category is Transient or higher, then this is the reference member of the base iterator. Otherwise, if the reference category is BVT then this is value_type. Otherwise (if the reference category is Void), then this is void

typedef select_first_type_if< typename add_const<value_type>::type , const_reference , REF_CAT_IS_BVT >::type effective_const_reference

The effective const_reference type.

If the base iterator element reference category is Transient or higher, then this is const_reference. Otherwise, if the reference category is BVT then this is value_type. Otherwise (if the reference category is Void), then this is void

typedef select_first_type_if<void , pointer , REF_CAT_IS_BVT >::type effective_pointer

The effective pointer type.

If the base iterator element pointer category is Transient or higher, then this is the pointer member of the base iterator. Otherwise, if the pointer category is BVT then this is void. Otherwise (if the pointer category is Void), then this is void

typedef select_first_type_if<void , const_pointer , REF_CAT_IS_BVT >::type effective_const_pointer

The effective const_pointer type.

If the base iterator element pointer category is Transient or higher, then this is const_pointer. Otherwise, if the pointer category is BVT then this is void. Otherwise (if the pointer category is Void), then this is void


The documentation for this struct was generated from the following file:

Generated on Thu Jun 10 08:58:47 2010 for STLSoft by  doxygen 1.5.6