41 #ifndef PB_DS_TYPES_TRAITS_HPP 
   42 #define PB_DS_TYPES_TRAITS_HPP 
   60     template<
typename Key, 
typename Mapped>
 
   63     static const bool __simple = is_simple<Key>::value
 
   64                  && is_simple<Mapped>::value;
 
   65     typedef integral_constant<int, __simple>            indicator;
 
   69     template<
typename Key>
 
   72     typedef integral_constant<int, is_simple<Key>::value>   indicator;
 
   77     template<
typename _Tv>
 
   80     typedef _Tv     value_type;
 
   85     template<
typename _Th>
 
   88     typedef _Th     hash_type;
 
   94     template<
typename _Tv, 
typename _Th>
 
  100     template<
typename _Tv>
 
  106     template<
typename Key, 
typename Mapped, 
typename _Alloc, 
bool Store_Hash>
 
  113     template<
typename Key, 
typename Mapped, 
typename _Alloc>
 
  117     typedef typename _Alloc::size_type      size_type;
 
  120     typedef typename _Alloc::template rebind<Mapped>    __rebind_m;
 
  121     typedef typename __rebind_m::other          __rebind_ma;
 
  123     typedef typename _Alloc::template rebind<__value_type>  __rebind_v;
 
  124         typedef typename __rebind_v::other          __rebind_va;
 
  127     typedef typename __rebind_ma::value_type        mapped_type;
 
  128     typedef typename __rebind_ma::pointer       mapped_pointer;
 
  129     typedef typename __rebind_ma::const_pointer     mapped_const_pointer;
 
  130     typedef typename __rebind_ma::reference         mapped_reference;
 
  131     typedef typename __rebind_ma::const_reference   mapped_const_reference;
 
  133     typedef typename __rebind_va::value_type    value_type;
 
  134     typedef typename __rebind_va::pointer       pointer;
 
  135     typedef typename __rebind_va::const_pointer     const_pointer;
 
  136     typedef typename __rebind_va::reference     reference;
 
  137     typedef typename __rebind_va::const_reference   const_reference;
 
  146     template<
typename Key, 
typename Mapped, 
typename _Alloc>
 
  150     typedef typename _Alloc::size_type      size_type;
 
  153     typedef typename _Alloc::template rebind<Mapped>    __rebind_m;
 
  154     typedef typename __rebind_m::other          __rebind_ma;
 
  156     typedef typename _Alloc::template rebind<__value_type>  __rebind_v;
 
  157         typedef typename __rebind_v::other          __rebind_va;
 
  160     typedef typename __rebind_ma::value_type        mapped_type;
 
  161     typedef typename __rebind_ma::pointer       mapped_pointer;
 
  162     typedef typename __rebind_ma::const_pointer     mapped_const_pointer;
 
  163     typedef typename __rebind_ma::reference         mapped_reference;
 
  164     typedef typename __rebind_ma::const_reference   mapped_const_reference;
 
  166     typedef typename __rebind_va::value_type    value_type;
 
  167     typedef typename __rebind_va::pointer       pointer;
 
  168     typedef typename __rebind_va::const_pointer     const_pointer;
 
  169     typedef typename __rebind_va::reference     reference;
 
  170     typedef typename __rebind_va::const_reference   const_reference;
 
  180     template<
typename Key, 
typename _Alloc>
 
  184     typedef typename _Alloc::size_type      size_type;
 
  185     typedef Key                     value_type;
 
  188     typedef typename _Alloc::template rebind<null_type>     __rebind_m;
 
  189     typedef typename __rebind_m::other          __rebind_ma;
 
  190     typedef typename _Alloc::template rebind<value_type>    __rebind_v;
 
  191         typedef typename __rebind_v::other          __rebind_va;
 
  194     typedef typename __rebind_ma::value_type        mapped_type;
 
  195     typedef typename __rebind_ma::pointer       mapped_pointer;
 
  196     typedef typename __rebind_ma::const_pointer     mapped_const_pointer;
 
  197     typedef typename __rebind_ma::reference         mapped_reference;
 
  198     typedef typename __rebind_ma::const_reference   mapped_const_reference;
 
  200     typedef typename __rebind_va::pointer       pointer;
 
  201     typedef typename __rebind_va::const_pointer     const_pointer;
 
  202     typedef typename __rebind_va::reference     reference;
 
  203     typedef typename __rebind_va::const_reference   const_reference;
 
  210     template<
typename Key, 
typename _Alloc>
 
  219     template<
typename Key, 
typename _Alloc>
 
  223     typedef typename _Alloc::size_type      size_type;
 
  224     typedef Key                     value_type;
 
  227     typedef typename _Alloc::template rebind<null_type>     __rebind_m;
 
  228     typedef typename __rebind_m::other          __rebind_ma;
 
  229     typedef typename _Alloc::template rebind<value_type>    __rebind_v;
 
  230         typedef typename __rebind_v::other          __rebind_va;
 
  233     typedef typename __rebind_ma::value_type        mapped_type;
 
  234     typedef typename __rebind_ma::pointer       mapped_pointer;
 
  235     typedef typename __rebind_ma::const_pointer     mapped_const_pointer;
 
  236     typedef typename __rebind_ma::reference         mapped_reference;
 
  237     typedef typename __rebind_ma::const_reference   mapped_const_reference;
 
  239     typedef typename __rebind_va::pointer       pointer;
 
  240     typedef typename __rebind_va::const_pointer     const_pointer;
 
  241     typedef typename __rebind_va::reference     reference;
 
  242     typedef typename __rebind_va::const_reference   const_reference;
 
  249     template<
typename Key, 
typename _Alloc>
 
  255     template<
typename Key, 
typename Mapped, 
typename _Alloc, 
bool Store_Hash>
 
  262     template<
typename Key, 
typename Mapped, 
typename _Alloc, 
bool Store_Hash>
 
  264       : 
public type_dispatch<Key, Mapped, _Alloc, Store_Hash>::type
 
  268     typedef typename _Alloc::template rebind<Key>::other __rebind_a;
 
  271     typedef typename _Alloc::size_type      size_type;
 
  272     typedef typename __rebind_a::value_type     key_type;
 
  273     typedef typename __rebind_a::pointer        key_pointer;
 
  274     typedef typename __rebind_a::const_pointer  key_const_pointer;
 
  275     typedef typename __rebind_a::reference      key_reference;
 
  276     typedef typename __rebind_a::const_reference    key_const_reference;
 
  278     typedef integral_constant<int, Store_Hash>  store_extra;
 
  279     typedef typename __nothrowcopy::indicator   no_throw_indicator;
 
  281     store_extra                 m_store_extra_indicator;
 
  282     no_throw_indicator          m_no_throw_copies_indicator;
 
Struct holding two objects of arbitrary type. 
 
Primary template for representation of stored data. Two types of data can be stored: value and hash...
 
Traits for abstract types. 
 
Represents no type, or absence of type, for template tricks.