13 template <
typename KEY_TYPE,
typename VALUE_TYPE>
15 requires (copy_constructible<KEY_TYPE> and copy_constructible<VALUE_TYPE>)
21 template <
typename KEY_TYPE,
typename VALUE_TYPE>
22 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
24 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&> and constructible_from<VALUE_TYPE, const VALUE_TYPE2&>)
30 template <
typename KEY_TYPE,
typename VALUE_TYPE>
31 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
33 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&> and constructible_from<VALUE_TYPE, const VALUE_TYPE2&>)
39 template <
typename KEY_TYPE,
typename VALUE_TYPE>
40 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
41 KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (
const pair<KEY_TYPE2, VALUE_TYPE2>& rhs)
47 template <
typename KEY_TYPE,
typename VALUE_TYPE>
48 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
49 inline KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (
const KeyValuePair<KEY_TYPE2, VALUE_TYPE2>& rhs)
55 template <
typename KEY_TYPE,
typename VALUE_TYPE>
56 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
57 inline KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (pair<KEY_TYPE2, VALUE_TYPE2>&& rhs)
59 fKey = forward<KEY_TYPE2> (rhs.first);
60 fValue = forward<VALUE_TYPE2> (rhs.second);
63 template <
typename KEY_TYPE,
typename VALUE_TYPE>
64 template <
typename KEY_TYPE2,
typename VALUE_TYPE2>
65 inline KeyValuePair<KEY_TYPE, VALUE_TYPE>& KeyValuePair<KEY_TYPE, VALUE_TYPE>::operator= (KeyValuePair<KEY_TYPE2, VALUE_TYPE2>&& rhs)
67 fKey = forward<KEY_TYPE2> (rhs.fKey);
68 fValue = forward<VALUE_TYPE2> (rhs.fValue);
71 template <
typename KEY_TYPE,
typename VALUE_TYPE>
73 requires (three_way_comparable<KEY_TYPE> and three_way_comparable<VALUE_TYPE>)
75 return tie (fKey, fValue) <=> tie (rhs.fKey, rhs.fValue);
77 template <
typename KEY_TYPE,
typename VALUE_TYPE>
79 requires (equality_comparable<KEY_TYPE> and equality_comparable<VALUE_TYPE>)
81 return fKey == rhs.fKey and fValue == rhs.fValue;
89 template <
typename KEY_TYPE>
91 requires (copy_constructible<KEY_TYPE>)
95 template <
typename KEY_TYPE>
96 template <
typename KEY_TYPE2>
98 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&>)
103 template <
typename KEY_TYPE>
104 template <
typename KEY_TYPE2>
106 requires (constructible_from<KEY_TYPE, const KEY_TYPE2&>)
111 template <
typename KEY_TYPE>
112 template <
typename KEY_TYPE2>
113 KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (
const pair<KEY_TYPE2, void>& rhs)
118 template <
typename KEY_TYPE>
119 template <
typename KEY_TYPE2>
120 inline KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (
const KeyValuePair<KEY_TYPE2, void>& rhs)
125 template <
typename KEY_TYPE>
126 template <
typename KEY_TYPE2>
127 inline KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (pair<KEY_TYPE2, void>&& rhs)
129 fKey = forward<KEY_TYPE2> (rhs.first);
132 template <
typename KEY_TYPE>
133 template <
typename KEY_TYPE2>
134 inline KeyValuePair<KEY_TYPE, void>& KeyValuePair<KEY_TYPE, void>::operator= (KeyValuePair<KEY_TYPE2, void>&& rhs)
136 fKey = forward<KEY_TYPE2> (rhs.fKey);
139 template <
typename KEY_TYPE>
141 requires (three_way_comparable<KEY_TYPE>)
143 return fKey <=> rhs.fKey;
145 template <
typename KEY_TYPE>
147 requires (equality_comparable<KEY_TYPE>)
149 return fKey == rhs.fKey;
String is like std::u32string, except it is much easier to use, often much more space efficient,...
constexpr auto operator<=>(const KeyValuePair &) const
constexpr KeyValuePair()=default
constexpr bool operator==(const KeyValuePair &) const