The MPL Reference Manual: transform_view

Front Page / Sequences / Views / transform_view

# transform_view

### Synopsis

    template<
          typename Sequence
        , typename F
        >
    struct transform_view
    {
        // unspecified
        // ...
    };

### Description

A view the full range of `Sequence`'s transformed elements.

### Header

    #include <boost/mpl/transform_view.hpp>

### Model of

- Forward Sequence

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`Sequence` | Forward Sequence | A sequence to wrap.
`F` | Unary Lambda Expression | A transformation.

### Expression semantics

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

In the following table, `v` is an instance of `transform_view`, `s` is an arbitrary Forward Sequence, and `f` is an unary Lambda Expression.

Expression | Semantics
--- | ---
    transform_view<s,f>
    transform_view<s,f>::type
| A lazy Forward Sequence such that for each `i` in the range [`begin<v>::type`, `end<v>::type`) and each `j` in for in the range [`begin<s>::type`, `end<s>::type`) `deref<i>::type` is identical to `apply< f, deref<j>::type >::type`.
`size<v>::type` | The size of `v`; `size<v>::value == size<s>::value`; linear complexity; see Forward Sequence.

### Example

Find the largest type in a sequence.

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

    BOOST_MPL_ASSERT_RELATION( deref<iter>::type::value, ==, 50 );

### See also

Sequences, Views, filter_view, joint_view, zip_view, iterator_range