The MPL Reference Manual: single_view

Front Page / Sequences / Views / single_view

# single_view

### Synopsis

    template<
          typename T
        >
    struct single_view
    {
        // unspecified
        // ...
    };

### Description

A view onto an arbitrary type `T` as on a single-element sequence.

### Header

    #include <boost/mpl/single_view.hpp>

### Model of

- Random Access Sequence

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`T` | Any type | The type to be wrapped in a sequence.

### Expression semantics

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

In the following table, `v` is an instance of `single_view`, `x` is an arbitrary type.

Expression | Semantics
--- | ---
    single_view<x>
    single_view<x>::type
| A single-element Random Access Sequence `v` such that `front<v>::type` is identical to `x`.
`size<v>::type` | The size of `v`; `size<v>::value == 1`; see Random Access Sequence.

### Example

    typedef single_view<int> view;
    typedef begin<view>::type first;
    typedef end<view>::type last;

    BOOST_MPL_ASSERT(( is_same< deref<first>::type,int > ));
    BOOST_MPL_ASSERT(( is_same< next<first>::type,last > ));
    BOOST_MPL_ASSERT(( is_same< prior<last>::type,first > ));

    BOOST_MPL_ASSERT_RELATION( size<view>::value, ==, 1 );

### See also

Sequences, Views, `iterator_range`, `filter_view`, `transform_view`, `joint_view`, `zip_view`