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

The MPL Reference Manual: filter_view
Front Page / Sequences / Views / filter_view

filter_view

Synopsis

template<
      typename Sequence
    , typename Pred
    >
struct filter_view
{
    // unspecified
    // ...
};

Description

A view into a subset of Sequence's elements satisfying the predicate Pred.

Parameters

Parameter Requirement Description
Sequence Forward Sequence A sequence to wrap.
Pred Unary Lambda Expression A filtering predicate.

Expression semantics

Semantics of an expression is defined only where it differs from, or is not defined in Forward Sequence.

In the following table, v is an instance of filter_view, s is an arbitrary Forward Sequence, pred is an unary Lambda Expression.

Expression Semantics
filter_view<s,pred>
filter_view<s,pred>::type
A lazy Forward Sequence sequence of all the elements in the range [begin<s>::type, end<s>::type) that satisfy the predicate pred.
size<v>::type The size of v; size<v>::value == count_if<s,pred>::value; linear complexity; see Forward Sequence.

Example

Find the largest floating type in a sequence.

typedef vector<int,float,long,float,char[50],long double,char> types;
typedef max_element<
      transform_view< filter_view< types,boost::is_float<_> >, size_of<_> >
    >::type iter;

BOOST_MPL_ASSERT(( is_same< deref<iter::base>::type, long double > ));