25 #include <boost/hana/at_key.hpp>
26 #include <boost/hana/map.hpp>
27 #include <boost/hana/tuple.hpp>
38 #if __cplusplus > 201703L && !defined(__clang__) // C++20
40 template <
template <
typename>
class Value,
typename... Ts>
42 return boost::hana::unpack(boost::hana::tuple_t<Ts...>, [](
auto... t) {
43 return boost::hana::make_map(
44 boost::hana::make_pair(decltype(t)(), Value<
typename decltype(t)::
type>())...);
52 template <
template <
typename>
class Value,
typename... Ts>
54 return boost::hana::unpack(boost::hana::tuple_t<Ts...>, [](
auto... t) {
55 return boost::hana::make_map(
56 boost::hana::make_pair(decltype(t)(), Value<
typename decltype(t)::
type>())...);
62 template <
template <
typename>
class Value,
typename... Ts>
63 using TypeMap = decltype(detail::MakeTypeMap<Value, Ts...>());