Skip to content

Commit 1ed3ae8

Browse files
authored
Merge pull request #13763 from obsidiansystems/more-flexible-get
More flexible typing for `get` in `util.hh`
2 parents 22378ea + 0ef818d commit 1ed3ae8

File tree

1 file changed

+6
-7
lines changed
  • src/libutil/include/nix/util

1 file changed

+6
-7
lines changed

src/libutil/include/nix/util/util.hh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -196,17 +196,17 @@ std::pair<std::string_view, std::string_view> getLine(std::string_view s);
196196
/**
197197
* Get a value for the specified key from an associate container.
198198
*/
199-
template<class T>
200-
const typename T::mapped_type * get(const T & map, const typename T::key_type & key)
199+
template<class T, typename K>
200+
const typename T::mapped_type * get(const T & map, K & key)
201201
{
202202
auto i = map.find(key);
203203
if (i == map.end())
204204
return nullptr;
205205
return &i->second;
206206
}
207207

208-
template<class T>
209-
typename T::mapped_type * get(T & map, const typename T::key_type & key)
208+
template<class T, typename K>
209+
typename T::mapped_type * get(T & map, K & key)
210210
{
211211
auto i = map.find(key);
212212
if (i == map.end())
@@ -221,9 +221,8 @@ typename T::mapped_type * get(T && map, const typename T::key_type & key) = dele
221221
/**
222222
* Get a value for the specified key from an associate container, or a default value if the key isn't present.
223223
*/
224-
template<class T>
225-
const typename T::mapped_type &
226-
getOr(T & map, const typename T::key_type & key, const typename T::mapped_type & defaultValue)
224+
template<class T, typename K>
225+
const typename T::mapped_type & getOr(T & map, K & key, const typename T::mapped_type & defaultValue)
227226
{
228227
auto i = map.find(key);
229228
if (i == map.end())

0 commit comments

Comments
 (0)