12template<
typename Key,
typename Value>
17 : value_ { std::move(value) }
37template<wrapped_with<Pack> KeysPack,
typename Value>
43 : value_ { std::move(value) }
47 template<
typename Key>
52 return [
this, &key]<
typename... Keys>(
Pack<Keys...>) -> Value& {
61 template<
typename Key>
66 return [
this, &key]<
typename... Keys>(
Pack<Keys...>) ->
const Value& {
79template <
typename... KVPairs>
83 using KVPairs::inner_search...;
86 constexpr explicit MetaMap(KVPairs&&... pairs)
87 : KVPairs(std::move(pairs))...
91 template<
typename Self,
typename Key>
95 return std::forward<Self>(self)
96 .static_find(std::move(key))
100 template<
typename Self,
typename Key>
104 #define RETRIEVAL_CALL_ \
105 std::forward<Self>(self).inner_search(std::move(key))
118 #undef RETRIEVAL_CALL_
Compile-time type pack utilities and metaprogramming foundations.