Iterator¶
InputIterator¶
Requirements¶
requires(It i, It j)
{
{i != j} -> bool;
{*i} -> typename std::iterator_traits<It>::reference;
{*i++} -> typename std::iterator_traits<It>::value_type;
//{i->m};
}
OutputIterator¶
Requirements¶
requires(It r)//, Writable o, Writable a)
{
{++r} -> It &;
{r++} -> It;
//{*r = o};
//{*r++ = o};
}
ForwardIterator¶
Requirements¶
requires(It r)//, Writable o, Writable a)
{
{++r} -> It &;
{r++} -> It;
//{*r = o};
//{*r++ = o};
}
Additional Notes¶
Iff ForwardIterator satisfies OutputIterator, the type std::iterator_traits<It>::reference is a const reference.
BidirectionalIterator¶
Requirements¶
requires(It a)
{
{--a} -> It &;
{a--} -> It;
{*a--} -> typename std::iterator_traits<It>::reference;
}
RandomAccessIterator¶
Requirements¶
requires(It i,
It a,
It b,
It &r,
typename std::iterator_traits<It>::difference_type n)
{
{r + n} -> It;
{a + n} -> It;
{n + a} -> It;
{r -= n} -> It &;
{i - n} -> It;
{b - a} -> typename std::iterator_traits<It>::difference_type;
{i[n]} -> typename std::iterator_traits<It>::reference;
}
MutableIterator¶