【发布时间】:2022-01-08 17:13:39
【问题描述】:
我正在研究 tuple 的 C++20 实现:
template<size_t INDEX, typename T>
struct wrap { [[no_unique_address]] T data {}; };
template<typename...>
class base {};
template<size_t... INDEX, typename... Ts>
class base<index_sequence<INDEX...>, Ts...> : public wrap<INDEX, Ts>... {
public:
constexpr base( const Ts &... args ) : /* !! HERE SHALL THE MAGIC COME */ {}
};
template<typename... Ts>
class tuple : public base<index_sequence_for<Ts...>, Ts...> {
public:
/* Inherit base constructors */
using base<index_sequence_for<Ts...>, Ts...>::base;
};
我的问题是:如何正确实现代码代替/* !! HERE SHALL THE MAGIC COME */调用base,意思是wrap<>构造函数——wrap复制构造函数取T的对应实例(扩展自base的模板变量包Ts)保持在args?
提前感谢任何愿意提供帮助的人。
【问题讨论】:
标签: c++ templates variadic-templates c++20 stdtuple