38 #ifndef LIBPMEMOBJ_CPP_ITERATOR_TRAITS_HPP 39 #define LIBPMEMOBJ_CPP_ITERATOR_TRAITS_HPP 49 template <
typename T,
typename U,
typename C =
void>
50 struct has_iterator_category_convertible_to : std::false_type {
53 template <
typename T,
typename U>
54 struct has_iterator_category_convertible_to<
56 typename
std::enable_if<std::is_convertible<
57 typename std::iterator_traits<T>::iterator_category,
58 U>::value>::type> : std::true_type {
67 :
public has_iterator_category_convertible_to<T, std::output_iterator_tag> {
76 :
public has_iterator_category_convertible_to<T, std::input_iterator_tag> {
85 :
public has_iterator_category_convertible_to<T,
86 std::forward_iterator_tag> {
95 T, std::bidirectional_iterator_tag> {
102 template <
typename T>
104 T, std::random_access_iterator_tag> {
Type trait to determine if a given parameter type satisfies requirements of RandomAccessIterator.
Definition: iterator_traits.hpp:103
Type trait to determine if a given parameter type satisfies requirements of BidirectionalIterator.
Definition: iterator_traits.hpp:94
A persistent version of concurrent hash map implementation Ref: https://arxiv.org/abs/1509....
Definition: concurrent_hash_map.hpp:65
Type trait to determine if a given parameter type satisfies requirements of OutputIterator.
Definition: iterator_traits.hpp:66
Type trait to determine if a given parameter type satisfies requirements of ForwardIterator.
Definition: iterator_traits.hpp:84
A persistent version of concurrent hash map implementation Ref: https://arxiv.org/abs/1509....
Definition: allocation_flag.hpp:43