Boost C++ Libraries 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 / Sequences / Intrinsic Metafunctions / begin



      typename X
struct begin
    typedef unspecified type;


Returns an iterator that points to the first element of the sequence. If the argument is not a Forward Sequence, returns void_.


#include <boost/mpl/begin_end.hpp>

Model of

Tag Dispatched Metafunction


Parameter Requirement Description
X Any type A type whose begin iterator, if any, will be returned.

Expression semantics

For any arbitrary type x:

typedef begin<x>::type first;
Return type:Forward Iterator or void_.
Semantics:If x is a Forward Sequence, first is an iterator pointing to the first element of s; otherwise first is void_.
Postcondition:If first is an iterator, it is either dereferenceable or past-the-end; it is past-the-end if and only if size<x>::value == 0.


Amortized constant time.


typedef vector< unsigned char,unsigned short,
    unsigned int,unsigned long > unsigned_types;

typedef begin<unsigned_types>::type iter;
BOOST_MPL_ASSERT(( is_same< deref<iter>::type, unsigned char > ));

BOOST_MPL_ASSERT(( is_same< begin<int>::type, void_ > ));

See also

Iterators, Forward Sequence, end, size, empty