| Front Page / Sequences / Intrinsic Metafunctions / insert | 
template<
      typename Sequence
    , typename Pos
    , typename T
    >
struct insert
{
    typedef unspecified type;
};
template<
      typename Sequence
    , typename T
    >
struct insert
{
    typedef unspecified type;
};
insert is an overloaded name:
#include <boost/mpl/insert.hpp>
| Parameter | Requirement | Description | 
|---|---|---|
| Sequence | Extensible Sequence or Extensible Associative Sequence | A sequence to insert into. | 
| Pos | Forward Iterator | An iterator in Sequence specifying the insertion position. | 
| T | Any type | The element to be inserted. | 
For any Extensible Sequence s, iterator pos in s, and arbitrary type x:
typedef insert<s,pos,x>::type r;
| Return type: | |
|---|---|
| Precondition: | pos is an iterator in s. | 
| Semantics: | r is a sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), x, [pos, end<s>::type). | 
| Postcondition: | The relative order of the elements in r is the same as in s. at< r, distance< begin<s>::type,pos >::type >::type is identical to x; size<r>::value == size<s>::value + 1; | 
For any Extensible Associative Sequence s, iterator pos in s, and arbitrary type x:
typedef insert<s,x>::type r;
| Return type: | Extensible Associative Sequence | 
|---|---|
| Semantics: | r is concept-identical and equivalent to s, except that at< r, key_type<s,x>::type >::type is identical to value_type<s,x>::type. | 
| Postcondition: | size<r>::value == size<s>::value + 1. | 
typedef insert<s,pos,x>::type r;
| Return type: | Extensible Associative Sequence | 
|---|---|
| Precondition: | pos is an iterator in s. | 
| Semantics: | Equivalent to typedef insert<s,x>::type r; pos is ignored. | 
| Sequence archetype | Complexity | 
|---|---|
| Extensible Associative Sequence | Amortized constant time. | 
| Extensible Sequence | Linear in the worst case, or amortized constant time. | 
typedef vector_c<int,0,1,3,4,5,6,7,8,9> numbers; typedef find< numbers,integral_c<int,3> >::type pos; typedef insert< numbers,pos,integral_c<int,2> >::type range; BOOST_MPL_ASSERT_RELATION( size<range>::value, ==, 10 ); BOOST_MPL_ASSERT(( equal< range,range_c<int,0,10> > ));
typedef map< mpl::pair<int,unsigned> > m; typedef insert<m,mpl::pair<char,long> >::type m1; BOOST_MPL_ASSERT_RELATION( size<m1>::value, ==, 2 ); BOOST_MPL_ASSERT(( is_same< at<m1,int>::type,unsigned > )); BOOST_MPL_ASSERT(( is_same< at<m1,char>::type,long > ));