我在为了好玩而在C++中实现元组,并且陷入了困境,因为下面的类修改了它,以便我可以通过使用模板轻松地通过仅使用索引来提取每个元素。类似于std :: get。我将如何实现一个函数来提取这个类的元素?
TL; DR:如何提取元组内的元素的实现看起来像?
template<typename first_t, typename ... arg_v>
class Tuple : public Tuple<arg_v ...>
{
public:
Tuple()
{
}
Tuple(const first_t&& A) :
element(A)
{
}
Tuple(const first_t& A, arg_v& ... args) :
element(A), Tuple<arg_v ...>::Tuple(args ...)
{
}
Tuple(const first_t&& A, arg_v&& ... args) :
element(A), Tuple<arg_v ...>::Tuple(args ...)
{
}
first_t element;
};
template<typename last_t>
class Tuple<last_t>
{
public:
Tuple()
{
}
Tuple(const last_t& A) :
element(A)
{
}
Tuple(const last_t&& A) :
element(A)
{
}
last_t element;
};
您可以查看boost :: tuple或std :: tuple的源代码以获取指导。 –
你的移动构造函数不正确 - 'const &&不是你可以移动的东西,然后你也不会从任何东西移动。 – Barry