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

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 / key_type

key_type

Synopsis

template<
      typename Sequence
    , typename X
    >
struct key_type
{
    typedef unspecified type;
};

Description

Returns the key that would be used to identify X in Sequence.

Header

#include <boost/mpl/key_type.hpp>

Model of

Tag Dispatched Metafunction

Parameters

Parameter Requirement Description
Sequence Associative Sequence A sequence to query.
X Any type The type to get the key for.

Expression semantics

For any Associative Sequence s, iterators pos1 and pos2 in s, and an artibrary type x:

typedef key_type<s,x>::type k; 
Return type:A type.
Precondition:x can be put in s.
Semantics:k is the key that would be used to identify x in s.
Postcondition:If key_type< s,deref<pos1>::type >::type is identical to key_type< s,deref<pos2>::type >::type then pos1 is identical to pos2.

Complexity

Amortized constant time.

Example

typedef key_type< map<>,pair<int,unsigned> >::type k1;
typedef key_type< set<>,pair<int,unsigned> >::type k2;

BOOST_MPL_ASSERT(( is_same< k1,int > ));
BOOST_MPL_ASSERT(( is_same< k2,pair<int,unsigned> > ));

See also

Associative Sequence, value_type, has_key, set, map