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 an old version of boost. Click here for the latest version's documentation home page.



      typename Sequence
    , typename T
struct push_front
    typedef unspecified type;


push_front performs an insertion at the beginning of the sequence. The algorithm returns a new sequence which contains type T as its first element. The result sequence preserves all the functional and performance characteristics of the original Sequence, except its size and identity.


#include "boost/mpl/push_front.hpp"


 Parameter  Requirement  Description  
SequenceA model of Extensible SequenceA sequence to handle the insert operation.
TA typeThe element to be inserted.

Expression semantics

 Expression  Expression type  Precondition  Semantics  Postcondition 
typedef push_front<Sequence,T>::type s;A model of Extensible SequenceEquivalent to typedef insert< Sequence,begin<Sequence>::type,T >::type s;size<s>::type::value == size<Sequence>::type::value + 1; front<s>::type is identical to T


Amortized constant time [1].


typedef list_c<int,1,2,3,5,8,13,21> something;
BOOST_STATIC_ASSERT(size<something>::type::value == 7);
typedef push_front< something,integral_c<int,1> >::type fibonacci;
BOOST_STATIC_ASSERT(size<fibonacci>::type::value == 8);
BOOST_STATIC_ASSERT((equal< fibonacci,list_c<int,1,1,2,3,5,8,13,21>,equal_to<_,_> >::type::value));


[1] The algorithm can be viewed as a notational shorcut to more verbose insert< Sequence,begin<Sequence>::type,T >::type, and is provided only if the sequence can meet the stated complexity requirements.

See also

Extensible Sequence, insert, front, pop_front, push_back

Table of Contents
Last edited September 11, 2002 4:27 am