tin*_*lyx 5 c++ tuples template-meta-programming variadic-templates c++17
我想定义一个可变元组类型来表示坐标。例如,对于某些魔术类型:
template <unsigned int N>
struct CoordT {
typedef std::tuple<_some_magic_> coord_type;
};
Run Code Online (Sandbox Code Playgroud)
我想必须CoordT<3>::coord_type是 3 维坐标类型:
std::tuple<double, double, double>
Run Code Online (Sandbox Code Playgroud)
.
但是我不知道如何使用模板编程来生成N重复的doubles。
谁能帮忙解释一下怎么写?
用于std::make_integer_sequence生成适当长度的包,然后将元素映射为双精度:
template <size_t n>
struct TupleOfDoubles {
template <size_t... i>
static auto foo(std::index_sequence<i...>) {
return std::make_tuple(double(i)...);
}
using type = decltype(foo(std::make_index_sequence<n>{}));
};
Run Code Online (Sandbox Code Playgroud)
http://coliru.stacked-crooked.com/a/7950876813128c55