13 template <
typename KEY_TYPE,
typename VALUE_TYPE>
15 const ValueType& value)
noexcept (is_nothrow_constructible_v<KEY_TYPE, KEY_TYPE> and
16 is_nothrow_constructible_v<VALUE_TYPE, VALUE_TYPE>)
17 requires (copy_constructible<KEY_TYPE> and copy_constructible<VALUE_TYPE>)
23 template <
typename KEY_TYPE,
typename VALUE_TYPE>
24 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
26 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&> and constructible_from<VALUE_TYPE, const VALUE_TYPE2&>)
32 template <
typename KEY_TYPE,
typename VALUE_TYPE>
33 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
35 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&> and constructible_from<VALUE_TYPE, const VALUE_TYPE2&>)
41 template <
typename KEY_TYPE,
typename VALUE_TYPE>
42 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
43 KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (
const pair<KEY_TYPE2, VALUE_TYPE2>& rhs)
49 template <
typename KEY_TYPE,
typename VALUE_TYPE>
50 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
51 inline KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (
const KeyValuePair<KEY_TYPE2, VALUE_TYPE2>& rhs)
57 template <
typename KEY_TYPE,
typename VALUE_TYPE>
58 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
59 inline KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (pair<KEY_TYPE2, VALUE_TYPE2>&& rhs)
61 fKey = forward<KEY_TYPE2> (rhs.first);
62 fValue = forward<VALUE_TYPE2> (rhs.second);
65 template <
typename KEY_TYPE,
typename VALUE_TYPE>
66 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
67 inline KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (KeyValuePair<KEY_TYPE2, VALUE_TYPE2>&& rhs)
69 fKey = forward<KEY_TYPE2> (rhs.fKey);
70 fValue = forward<VALUE_TYPE2> (rhs.fValue);
73 template <
typename KEY_TYPE,
typename VALUE_TYPE>
75 requires (three_way_comparable<KEY_TYPE> and three_way_comparable<VALUE_TYPE>)
77 return tie (fKey, fValue) <=> tie (rhs.fKey, rhs.fValue);
79 template <
typename KEY_TYPE,
typename VALUE_TYPE>
81 requires (equality_comparable<KEY_TYPE> and equality_comparable<VALUE_TYPE>)
83 return fKey == rhs.fKey and fValue == rhs.fValue;
91 template <
typename KEY_TYPE>
93 requires (copy_constructible<KEY_TYPE>)
97 template <
typename KEY_TYPE>
98 template <
typename KEY_TYPE2>
100 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&>)
105 template <
typename KEY_TYPE>
106 template <
typename KEY_TYPE2>
108 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&>)
113 template <
typename KEY_TYPE>
114 template <
typename KEY_TYPE2>
115 KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (
const pair<KEY_TYPE2, void>& rhs)
120 template <
typename KEY_TYPE>
121 template <
typename KEY_TYPE2>
122 inline KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (
const KeyValuePair<KEY_TYPE2, void>& rhs)
127 template <
typename KEY_TYPE>
128 template <
typename KEY_TYPE2>
129 inline KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (pair<KEY_TYPE2, void>&& rhs)
131 fKey = forward<KEY_TYPE2> (rhs.first);
134 template <
typename KEY_TYPE>
135 template <
typename KEY_TYPE2>
136 inline KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (KeyValuePair<KEY_TYPE2, void>&& rhs)
138 fKey = forward<KEY_TYPE2> (rhs.fKey);
141 template <
typename KEY_TYPE>
143 requires (three_way_comparable<KEY_TYPE>)
145 return fKey <=> rhs.fKey;
147 template <
typename KEY_TYPE>
149 requires (equality_comparable<KEY_TYPE>)
151 return fKey == rhs.fKey;
constexpr auto operator<=>(const KeyValuePair &) const
constexpr KeyValuePair() noexcept(is_nothrow_constructible_v< KEY_TYPE > and is_nothrow_constructible_v< VALUE_TYPE >)=default
constexpr bool operator==(const KeyValuePair &) const