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
It
is_input_iterator - The type
It
is_default_constructible
The type std::iterator_traits<It>::reference
must be exactly
T&
ifIt
satisfies OutputIterator (It
is mutable)const T&
otherwise (It
is constant),
(where T
is the type denoted by std::iterator_traits<It>::value_type
)
And, given
i
, dereferenceable iterator of typeIt
reference
, 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++))
>;
};