9 #ifndef LIBPMEMOBJ_CPP_ITERATOR_TRAITS_HPP
10 #define LIBPMEMOBJ_CPP_ITERATOR_TRAITS_HPP
20 template <
typename T,
typename U,
typename C =
void>
21 struct has_iterator_category_convertible_to : std::false_type {
24 template <
typename T,
typename U>
25 struct has_iterator_category_convertible_to<
27 typename std::enable_if<std::is_convertible<
28 typename std::iterator_traits<T>::iterator_category,
29 U>::value>::type> : std::true_type {
38 :
public has_iterator_category_convertible_to<T, std::output_iterator_tag> {
47 :
public has_iterator_category_convertible_to<T, std::input_iterator_tag> {
56 :
public has_iterator_category_convertible_to<T,
57 std::forward_iterator_tag> {
66 T, std::bidirectional_iterator_tag> {
75 T, std::random_access_iterator_tag> {
Persistent memory namespace.
Definition: allocation_flag.hpp:15
Type trait to determine if a given parameter type satisfies requirements of BidirectionalIterator.
Definition: iterator_traits.hpp:66
Type trait to determine if a given parameter type satisfies requirements of ForwardIterator.
Definition: iterator_traits.hpp:57
Type trait to determine if a given parameter type satisfies requirements of OutputIterator.
Definition: iterator_traits.hpp:38
Type trait to determine if a given parameter type satisfies requirements of RandomAccessIterator.
Definition: iterator_traits.hpp:75