将 integral_constants 元组转换为整数元组
Converting a tuple of integral_constants to a constexpr tuple of ints
>假设我有一个hana::integral_constant
元组,如下所示:
auto tuple_of_int_const = hana::make_tuple(hana::integral_constant<int,0>(),
hana::integral_constant<int,1>());
我现在正在尝试从中生成一个 constexpr 整数元组,如下所示:
constexpr auto constexpr_tuple = hana::make_tuple(0,1);
我的尝试:
#include "boost/hana.hpp"
using namespace boost;
auto tuple_of_int_const = hana::make_tuple(hana::integral_constant<int,0>(),
hana::integral_constant<int,1>());
constexpr auto tuple = hana::transform(tuple_of_int_const,[](auto x){ return x(); });
问题是lambda的不是constexpr。所以问题是这样的:如何将 integral_constant
s 的元组转换为 constexpr lambda?
注意:
我正在使用 c++14
Boost.Hana将函数value_of
作为Constant
概念的一部分。
#include <boost/hana.hpp>
namespace hana = boost::hana;
int main() {
auto tuple_of_int_const = hana::make_tuple(hana::integral_constant<int,0>(),
hana::integral_constant<int,1>());
constexpr auto tuple = hana::transform(tuple_of_int_const, hana::value_of);
static_assert(hana::make_tuple(0, 1) == tuple, "");
}
您可以创建常规模板函数:
template <typename ... Ts>
constexpr auto tuple_transform(std::tuple<Ts...>)
{
return std::make_tuple(Ts{}()...);
}
演示
相关文章:
- 将元组的向量转换/构造为堆
- 如何在编译时将齐次元组转换为数组?
- Boost.Hana:在 constexpr 上下文中将值元组转换为相应类型的元组
- 将多个数组转换为元组
- 将函数应用于元组中的每个元素,将每个元素强制转换为类型包中的不同类型,然后作为参数包传递
- 为什么此元组到引用元组 (std::tie) 转换有效?
- 将树转换为元组的编译时转换
- 如何将标准::数组转换为标准::元组?
- 如何将元组转换为C 11中的字节数组
- 元组尺寸默认构造函数及其转换为std :: size_t
- 使用 hana::transform 在 C++14 中转换元组内的类型
- 将STD ::变体转换为STD ::模板类实例的元组
- 将 integral_constants 元组转换为整数元组
- 错误:无法从"元组<[...]、std::__1::元组<无符号长长、无符号长长>>"到"常量元组<[...],uint_type>"的可行转换
- 将元组转换为变体
- Boost::P ython,将元组转换为Python有效,矢量<tuple>不
- 有没有一种方法可以将左值和右值的列表分别转换为具有引用类型和完整类型的元组
- 将元组转换为函数参数
- 如何使用笛卡尔积将向量元组转换为元组的向量
- 将std::元组转换为模板参数包