我正在尝试使用boost::hana
创建一个constexpr
非常大的查找表(最多 32768 个元素)。这是我的代码:
#include <boost/hana.hpp>
#include <boost/hana/assert.hpp>
namespace hana = boost::hana;
template <typename Count>
static constexpr auto createLookupTable(void)
{
auto indices = hana::make_range(hana::int_c<0>, hana::int_c<Count::value>);
return hana::unpack(indices, [](auto... index)
{
return hana::make_map(
hana::make_pair(
index,
hana::int_c<0>)...);
});
}
int main()
{
constexpr auto lookupTable = createLookupTable<std::integral_constant<unsigned, 128>>();
BOOST_HANA_CONSTANT_CHECK(hana::length(lookupTable) == hana::size_c<128>);
}
出于测试目的,每对的值为hana::int_c<0>
。这被一些有意义的东西所取代。编译这个需要一些时间。有没有更快的方法来使用hana?
谢谢