在 C++17 中定义可变坐标(元组)类型?

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。

谁能帮忙解释一下怎么写?

Bri*_*ian 4

用于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