.. Sequences/Intrinsic Metafunctions//key_type key_type ======== Synopsis -------- .. parsed-literal:: 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 ------ .. parsed-literal:: #include 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``: .. parsed-literal:: typedef key_type::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::type >::type`` is identical to ``key_type< s,deref::type >::type`` then ``pos1`` is identical to ``pos2``. Complexity ---------- Amortized constant time. Example ------- .. parsed-literal:: typedef key_type< map<>,pair >::type k1; typedef key_type< set<>,pair >::type k2; BOOST_MPL_ASSERT(( is_same< k1,int > )); BOOST_MPL_ASSERT(( is_same< k2,pair > )); See also -------- |Associative Sequence|, |value_type|, |has_key|, |set|, |map|