1.. Sequences/Intrinsic Metafunctions//key_type 2 3key_type 4======== 5 6Synopsis 7-------- 8 9.. parsed-literal:: 10 11 template< 12 typename Sequence 13 , typename X 14 > 15 struct key_type 16 { 17 typedef |unspecified| type; 18 }; 19 20 21 22Description 23----------- 24 25Returns the |key| that would be used to identify ``X`` in ``Sequence``. 26 27 28Header 29------ 30 31.. parsed-literal:: 32 33 #include <boost/mpl/key_type.hpp> 34 35 36Model of 37-------- 38 39|Tag Dispatched Metafunction| 40 41 42Parameters 43---------- 44 45+---------------+---------------------------+-----------------------------------------------+ 46| Parameter | Requirement | Description | 47+===============+===========================+===============================================+ 48| ``Sequence`` | |Associative Sequence| | A sequence to query. | 49+---------------+---------------------------+-----------------------------------------------+ 50| ``X`` | Any type | The type to get the |key| for. | 51+---------------+---------------------------+-----------------------------------------------+ 52 53 54Expression semantics 55-------------------- 56 57For any |Associative Sequence| ``s``, iterators ``pos1`` and ``pos2`` in ``s``, and an 58artibrary type ``x``: 59 60.. parsed-literal:: 61 62 typedef key_type<s,x>::type k; 63 64:Return type: 65 A type. 66 67:Precondition: 68 ``x`` can be put in ``s``. 69 70:Semantics: 71 ``k`` is the |key| that would be used to identify ``x`` in ``s``. 72 73:Postcondition: 74 If ``key_type< s,deref<pos1>::type >::type`` is identical to 75 ``key_type< s,deref<pos2>::type >::type`` then ``pos1`` is identical to ``pos2``. 76 77 78 79Complexity 80---------- 81 82Amortized constant time. 83 84 85Example 86------- 87 88.. parsed-literal:: 89 90 typedef key_type< map<>,pair<int,unsigned> >::type k1; 91 typedef key_type< set<>,pair<int,unsigned> >::type k2; 92 93 BOOST_MPL_ASSERT(( is_same< k1,int > )); 94 BOOST_MPL_ASSERT(( is_same< k2,pair<int,unsigned> > )); 95 96 97See also 98-------- 99 100|Associative Sequence|, |value_type|, |has_key|, |set|, |map| 101 102 103.. copyright:: Copyright � 2001-2009 Aleksey Gurtovoy and David Abrahams 104 Distributed under the Boost Software License, Version 1.0. (See accompanying 105 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 106