我有一个模板类,它接受一个类型对和一个整数常量的元组(某些类型可以重复,因此它不能是 hana::map)。我正在寻找迭代元组并调用toString()
为每种类型定义的静态类型方法。我收到的错误是:
“错误:类型 'decltype(hana::first(c))' (又名 'boost::hana::type_impl::_ &')不能在 '::' 之前使用,因为它没有成员”
struct A
{
static std::string toString() {return std::string("A");}
};
struct B
{
static std::string toString() {return std::string("B");}
};
using namespace hana::literals;
std::array<std::string,3> ret;
constexpr auto tupleOfPairs = hana::make_tuple(
hana::make_pair(hana::type_c<A>, 0_c),
hana::make_pair(hana::type_c<B>, 0_c),
hana::make_pair(hana::type_c<B>, 5_c));
size_t idx = 0;
hana::for_each(tupleOfPairs, [&](auto c)
{
ret[idx++] = decltype(hana::first(c))::type::toString();
});
当它只是一个元组(使用decltype(c)::type::toString()
)时,我有一些非常相似的工作,但是一旦我将元组元素对与一个整数常数进行配对,我似乎无法提取该对的第一个元素的类型并执行相同的操作。
谢谢