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;
 
GNU extensions for policy-based data structures for public use. 
Traits for abstract types. 
Represents no type, or absence of type, for template tricks. 
Primary template for representation of stored data. Two types of data can be stored: value and hash...
Struct holding two objects of arbitrary type.