Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
Front Page / Algorithms / Inserters / inserter (class)

inserter (class)

Synopsis

template<
      typename State
    , typename Operation
    >
struct inserter
{
    typedef State state;
    typedef Operation operation;
};

Description

A general-purpose model of the Inserter concept.

Header

#include <boost/mpl/inserter.hpp>

Model of

Inserter

Parameters

Parameter Requirement Description
State Any type A initial state.
Operation Binary Lambda Expression An output operation.

Expression semantics

The semantics of an expression are defined only where they differ from, or are not defined in Inserter.

For any binary Lambda Expression op and arbitrary type state:

Expression Semantics
inserter<op,state> An Inserter.

Complexity

Amortized constant time.

Example

template< typename N > struct is_odd : bool_< ( N::value % 2 ) > {};

typedef copy<
      range_c<int,0,10>
    , inserter< // a filtering 'push_back' inserter
          vector<>
        , if_< is_odd<_2>, push_back<_1,_2>, _1 >
        >
    >::type odds;

BOOST_MPL_ASSERT(( equal< odds, vector_c<int,1,3,5,7,9>, equal_to<_,_> > ));

See also

Algorithms, Inserter, Reversible Algorithm, front_inserter, back_inserter