我有以下代码:
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)
);
有没有办法知道&#39; myMap&#39;预先?我尝试用:
using MyMap = hana::map<hana::pair<hana::type<int>, int>, ...>;
但它失败了,因为decltype(myMap)是hana :: map&lt;实现定义&gt;。是否有一种&#39; result_of&#39; meta函数会给出imp-defined类型?喜欢:
using MyMap = typename hana::result_of_map<hana::pair<hana::type<int>, int>, ...>::type;
我需要类型来存储类成员映射。
答案 0 :(得分:3)
如果你真的需要这种类型,这里有两种可能的解决方案:
您可以在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>;