1#ifndef HALCHECK_LIB_ITERATOR_TYPE_TRAITS_HPP
2#define HALCHECK_LIB_ITERATOR_TYPE_TRAITS_HPP
6#include <halcheck/lib/iterator/base.hpp>
7#include <halcheck/lib/type_traits.hpp>
11namespace halcheck {
namespace lib {
16 lib::copy_constructible<I>,
17 lib::copy_assignable<I>,
40 lib::equality_comparable<I>,
57template<
typename I,
typename T>
72template<
typename I,
typename T>
78 lib::input_iterator<I>,
79 lib::default_constructible<I>,
80 lib::convertible<decltype(std::declval<I &>()++),
const I &>,
97 lib::forward_iterator<I>,
116 lib::bidirectional_iterator<I>,
typename std::iterator_traits< I >::value_type iter_value_t
The type of value pointed to by an iterator.
Definition base.hpp:16
typename std::iterator_traits< I >::difference_type iter_difference_t
The return type of operator- for an iterator.
Definition base.hpp:32
typename std::iterator_traits< I >::reference iter_reference_t
The return type of operator* for an iterator.
Definition base.hpp:24
typename std::iterator_traits< I >::iterator_category iter_category_t
A tag type indicating the level of supported iterator options a type provides.
Definition base.hpp:40
typename std::enable_if< Cond, T >::type enable_if_t
An implementation of std::enable_if_t.
Definition type_traits.hpp:93
void void_t
An implementation of std::void_t.
Definition type_traits.hpp:43
Determines whether a type satisfies the LegacyBidirectionalIterator concept.
Definition type_traits.hpp:111
An implementation of std::experimental::is_detected.
Definition type_traits.hpp:247
Determines whether a type satisfies the LegacyForwardIterator concept.
Definition type_traits.hpp:92
Determines whether a type satisfies the LegacyIterator concept.
Definition type_traits.hpp:34
Determines whether a type satisfies the LegacyOutputIterator concept.
Definition type_traits.hpp:73
Determines whether a type satisfies the LegacyRandomAccessIterator concept.
Definition type_traits.hpp:140