is_forward_iterator¶
Header¶
#include <tick/traits/is_forward_iterator.h>
Description¶
A forward iterator is an iterator that can read data from the pointed-to element.
Requirements¶
The type It satisfies is_forward_iterator if:
- The type
Itis_input_iterator - The type
Itis_default_constructible
The type std::iterator_traits<It>::reference must be exactly
T&ifItsatisfies OutputIterator (Itis mutable)const T&otherwise (Itis constant),
(where T is the type denoted by std::iterator_traits<It>::value_type)
And, given
i, dereferenceable iterator of typeItreference, the type denoted bystd::iterator_traits<It>::reference
The following expressions must be valid and have their specified effects
| Expression | Return | Equivalent expression |
|---|---|---|
i++ |
It |
It ip=i; ++i; return ip; |
*i++ |
reference |
Synopsis¶
TICK_TRAIT(is_forward_iterator, is_input_iterator<_>, is_default_constructible<_>)
{
template<class I>
auto require(I&& i) -> valid<
decltype(returns<typename std::add_lvalue_reference<I>::type>(++i)),
decltype(returns<I>(i++)),
is_true<std::is_reference<typename iterator_traits<I>::reference>>,
decltype(returns<typename iterator_traits<I>::value_type&>(*i)),
decltype(returns<typename iterator_traits<I>::reference>(*i++))
>;
};




