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。 –