2
我想弄清楚如何在编译时使用boost:hana来转换整数常量列表。Boost Hana编译时间列表转换
我有我的名单:
constexpr auto vals = hana::to<hana::tuple_tag>(hana::range_c<int, 0, 3>);
我想申请功能:
constexpr auto Pow2(int i) { return 1 << i; }
然而
constexpr auto res = hana::transform(list, Pow2);
生产为hana::tuple<int, int, int>
资源类型。我没有看到如何将参数移动到拉姆达为模板参数为hana::int_c
// Compiler error: Non-type template argument is not a constant expression
constexpr auto Pow2(int i)
{
return hana::int_c<1 << i>{};
}
感谢。我想知道这是否是一种好方法,只是我的编译器不支持规范技术。将您的示例切换为叮当声3.9.1 'prog.cc:12:20:错误:constexpr变量'res'必须通过常量表达式初始化 constexpr auto res = hana :: transform(vals,[](auto x ){return hana :: int_c <1><< x;});' 有没有办法让它与clang 3.9.1一起工作? – wes
@ user78145:是的,只是摆脱了'constexpr' in'constexpr res' –
这个原因不起作用是因为lambda不能在C++ 14中实现,这是一个愚蠢的限制,在C + +17。 –