有没有办法获取地图类型?
Is there a way to obtain the map type?
我有以下代码:
auto myMap = hana::make_map(
hana::make_pair(hana::type_c<int>, 2),
hana::make_pair(hana::type_c<char const*>, "hi"),
hana::make_pair(hana::type_c<double>, 3.0)
);
有没有办法事先知道'myMap'的类型?我尝试使用:
using MyMap = hana::map<hana::pair<hana::type<int>, int>, ...>;
但它失败了,因为 decltype(myMap) 是 hana::map< implementation-defined >。是否有一种 'result_of' 元函数可以提供 imp 定义的类型?喜欢:
using MyMap = typename hana::result_of_map<hana::pair<hana::type<int>, int>, ...>::type;
我需要类型来存储 class 成员映射。
如果您真的需要预先输入类型,这里有两种可能的解决方案:
您可以简单地将相同的表达式包装在 decltype
中。
using MyMap = decltype(hana::make_map(
hana::make_pair(hana::type_c<int>, 2),
hana::make_pair(hana::type_c<char const*>, "hi"),
hana::make_pair(hana::type_c<double>, 3.0)
));
对于使用与密钥相同类型的用例,您可以制作一个简单的类型别名模板。
template <typename ...T>
using type_map_t = decltype(hana::make_map(hana::make_pair(hana::type_c<T>, std::declval<T>())...));
using MyMap = type_map_t<int, char const*, double>;
我有以下代码:
auto myMap = hana::make_map(
hana::make_pair(hana::type_c<int>, 2),
hana::make_pair(hana::type_c<char const*>, "hi"),
hana::make_pair(hana::type_c<double>, 3.0)
);
有没有办法事先知道'myMap'的类型?我尝试使用:
using MyMap = hana::map<hana::pair<hana::type<int>, int>, ...>;
但它失败了,因为 decltype(myMap) 是 hana::map< implementation-defined >。是否有一种 'result_of' 元函数可以提供 imp 定义的类型?喜欢:
using MyMap = typename hana::result_of_map<hana::pair<hana::type<int>, int>, ...>::type;
我需要类型来存储 class 成员映射。
如果您真的需要预先输入类型,这里有两种可能的解决方案:
您可以简单地将相同的表达式包装在
decltype
中。using MyMap = decltype(hana::make_map( hana::make_pair(hana::type_c<int>, 2), hana::make_pair(hana::type_c<char const*>, "hi"), hana::make_pair(hana::type_c<double>, 3.0) ));
对于使用与密钥相同类型的用例,您可以制作一个简单的类型别名模板。
template <typename ...T> using type_map_t = decltype(hana::make_map(hana::make_pair(hana::type_c<T>, std::declval<T>())...)); using MyMap = type_map_t<int, char const*, double>;