blob: 7ea293833bb70381468aed6dbc53de4974f40d45 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2012 Eric Niebler
Distributed under the Boost
Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-->
<header name="boost/proto/functional/std/iterator.hpp">
<para>Includes Proto callables for the functions found in the standard <code>&lt;iterator&gt; header</code>.</para>
<namespace name="boost">
<namespace name="proto">
<namespace name="functional">
<!-- proto::functional::advance -->
<struct name="advance">
<purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::advance()</code> function on its arguments.</purpose>
<description>
<para>
A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::advance()</code> function on its arguments.</para>
</description>
<inherit>
<type><classname>proto::callable</classname></type>
</inherit>
<typedef name="result_type">
<type>void</type>
</typedef>
<method-group name="public member functions">
<method name="operator()" cv="const">
<type>void</type>
<template>
<template-type-parameter name="InputIterator"/>
</template>
<template>
<template-type-parameter name="Distance"/>
</template>
<parameter name="x">
<paramtype>InputIterator &amp;</paramtype>
</parameter>
<parameter name="n">
<paramtype>Distance</paramtype>
</parameter>
<description>
<para>Calls <code>std::advance(x, n)</code></para>
</description>
</method>
</method-group>
</struct>
<!-- proto::functional::distance -->
<struct name="distance">
<purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::distance()</code> function on its arguments.</purpose>
<description>
<para>
A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::distance()</code> function on its arguments.</para>
</description>
<inherit>
<type><classname>proto::callable</classname></type>
</inherit>
<struct-specialization name="result">
<template>
<template-type-parameter name="This"/>
<template-type-parameter name="InputIterator"/>
</template>
<specialization>
<template-arg>This(InputIterator, InputIterator)</template-arg>
</specialization>
<typedef name="type">
<type>typename std::iterator_traits&lt;
typename boost::remove_const&lt;
typename boost::remove_reference&lt;InputIterator&gt;::type
&gt;::type
&gt;::difference_type</type>
</typedef>
</struct-specialization>
<method-group name="public member functions">
<method name="operator()" cv="const">
<type>void</type>
<template>
<template-type-parameter name="InputIterator"/>
</template>
<parameter name="first">
<paramtype>InputIterator</paramtype>
</parameter>
<parameter name="last">
<paramtype>InputIterator</paramtype>
</parameter>
<returns>
<para><code>std::distance(first, last)</code></para>
</returns>
</method>
</method-group>
</struct>
<!-- proto::functional::next -->
<struct name="next">
<purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::next()</code> function on its arguments.</purpose>
<description>
<para>
A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::next()</code> function on its arguments.</para>
</description>
<inherit>
<type><classname>proto::callable</classname></type>
</inherit>
<struct-specialization name="result">
<template>
<template-type-parameter name="This"/>
<template-type-parameter name="ForwardIterator"/>
</template>
<specialization>
<template-arg>This(ForwardIterator)</template-arg>
</specialization>
<typedef name="type">
<type>typename boost::remove_const&lt;
typename boost::remove_reference&lt;ForwardIterator&gt;::type
&gt;::type</type>
</typedef>
</struct-specialization>
<struct-specialization name="result">
<template>
<template-type-parameter name="This"/>
<template-type-parameter name="ForwardIterator"/>
<template-type-parameter name="Distance"/>
</template>
<specialization>
<template-arg>This(ForwardIterator, Distance)</template-arg>
</specialization>
<typedef name="type">
<type>typename boost::remove_const&lt;
typename boost::remove_reference&lt;ForwardIterator&gt;::type
&gt;::type</type>
</typedef>
</struct-specialization>
<method-group name="public member functions">
<method name="operator()" cv="const">
<type>void</type>
<template>
<template-type-parameter name="ForwardIterator"/>
</template>
<parameter name="x">
<paramtype>ForwardIterator</paramtype>
</parameter>
<returns>
<para><code>std::next(x)</code></para>
</returns>
</method>
<method name="operator()" cv="const">
<type>void</type>
<template>
<template-type-parameter name="ForwardIterator"/>
</template>
<parameter name="x">
<paramtype>ForwardIterator</paramtype>
</parameter>
<parameter name="n">
<paramtype>typename std::iterator_traits&lt;ForwardIterator&gt;::difference_type</paramtype>
</parameter>
<returns>
<para><code>std::next(x, n)</code></para>
</returns>
</method>
</method-group>
</struct>
<!-- proto::functional::prior -->
<struct name="prior">
<purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::prior()</code> function on its arguments.</purpose>
<description>
<para>
A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
<code>std::prior()</code> function on its arguments.</para>
</description>
<inherit>
<type><classname>proto::callable</classname></type>
</inherit>
<struct-specialization name="result">
<template>
<template-type-parameter name="This"/>
<template-type-parameter name="BidirectionalIterator"/>
</template>
<specialization>
<template-arg>This(BidirectionalIterator)</template-arg>
</specialization>
<typedef name="type">
<type>typename boost::remove_const&lt;
typename boost::remove_reference&lt;BidirectionalIterator&gt;::type
&gt;::type</type>
</typedef>
</struct-specialization>
<struct-specialization name="result">
<template>
<template-type-parameter name="This"/>
<template-type-parameter name="BidirectionalIterator"/>
<template-type-parameter name="Distance"/>
</template>
<specialization>
<template-arg>This(BidirectionalIterator, Distance)</template-arg>
</specialization>
<typedef name="type">
<type>typename boost::remove_const&lt;
typename boost::remove_reference&lt;BidirectionalIterator&gt;::type
&gt;::type</type>
</typedef>
</struct-specialization>
<method-group name="public member functions">
<method name="operator()" cv="const">
<type>void</type>
<template>
<template-type-parameter name="BidirectionalIterator"/>
</template>
<parameter name="x">
<paramtype>BidirectionalIterator</paramtype>
</parameter>
<returns>
<para><code>std::prior(x)</code></para>
</returns>
</method>
<method name="operator()" cv="const">
<type>void</type>
<template>
<template-type-parameter name="BidirectionalIterator"/>
</template>
<parameter name="x">
<paramtype>BidirectionalIterator</paramtype>
</parameter>
<parameter name="n">
<paramtype>typename std::iterator_traits&lt;BidirectionalIterator&gt;::difference_type</paramtype>
</parameter>
<returns>
<para><code>std::prior(x, n)</code></para>
</returns>
</method>
</method-group>
</struct>
</namespace>
</namespace>
</namespace>
</header>