The MPL Reference Manual: erase_key

Front Page / Sequences / Intrinsic Metafunctions / erase_key

# erase_key

### Synopsis

    template<
          typename AssocSeq
        , typename Key
        >
    struct erase_key
    {
        typedef unspecified type;
    };

### Description

Erases elements associated with the key `Key` in the Extensible Associative Sequence `AssocSeq` .

### Header

    #include <boost/mpl/erase_key.hpp>

### Model of

Tag Dispatched Metafunction

### Parameters

Parameter | Requirement | Description
--- | --- | ---
`AssocSeq` | Extensible Associative Sequence | A sequence to erase elements from.
`Key` | Any type | A key for the elements to be removed.

### Expression semantics

For any Extensible Associative Sequence `s`, and arbitrary type `key`:

    typedef erase_key<s,key>::type r;

Return type: | Extensible Associative Sequence.
Semantics: | `r` is concept-identical and equivalent to `s` except that `has_key<r,k>::value == false`.
Postcondition: | `size<r>::value == size<s>::value - 1`.

### Complexity

Amortized constant time.

### Example

    typedef map< pair<int,unsigned>, pair<char,long> > m;
    typedef erase_key<m,char>::type m1;

    BOOST_MPL_ASSERT_RELATION( size<m1>::type::value, ==, 1 );
    BOOST_MPL_ASSERT(( is_same< at<m1,char>::type,void_ > ));
    BOOST_MPL_ASSERT(( is_same< at<m1,int>::type,unsigned > ));

### See also

Extensible Associative Sequence, erase, has_key, insert