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: push_front
Front Page / Sequences / Intrinsic Metafunctions / push_front

push_front

Synopsis

template<
      typename Sequence
    , typename T
    >
struct push_front
{
    typedef unspecified type;
};

Description

push_front performs an insertion at the beginning of the sequence with guaranteed O(1) complexity.

Parameters

Parameter Requirement Description
Sequence Front Extensible Sequence A sequence to insert into.
T Any type The element to be inserted.

Expression semantics

For any Front Extensible Sequence s and arbitrary type x:

typedef push_front::type r;
Return type:

Front Extensible Sequence.

Semantics:

Equivalent to

typedef insert< s,begin::type,x >::type r;
Postcondition:

size::value == size::value + 1; front::type is identical to x.

Complexity

Amortized constant time.

Example

typedef vector_c v;
BOOST_MPL_ASSERT_RELATION( size::value, ==, 7 );

typedef push_front< v,integral_c >::type fibonacci;
BOOST_MPL_ASSERT_RELATION( size::value, ==, 8 );

BOOST_MPL_ASSERT(( equal<
      fibonacci
    , vector_c
    , equal_to<_,_>
    > ));