我目前正在boost::hana
为个人项目学习。
在下面的代码片段中,我创建了一个boost::hana::map
具有as 键和一个as 值type_c<T>
的实例。Foo<T>
它有效,但我真的很想将my_map
变量用作类成员,并且不可能auto
在成员声明中使用限定符。此外,如果我能够types
以某种方式传递元组(作为模板参数或构造函数参数),那就太好了。
你有什么建议吗?
#include <iostream>
#include "boost/hana.hpp"
#include <typeinfo>
using namespace boost;
template<typename T>
class Foo {
T t;
public:
void print() { std::cout <<typeid(T).name() << t; }
};
int main() {
auto types = hana::tuple_t<float, int, std::string>;
auto my_map = boost::hana::unpack(types, [](auto ...t) {
return boost::hana::make_map(boost::hana::make_pair(t, Foo<typename decltype(t)::type>()) ...);
});
my_map[hana::type_c<int>].print();
}