源码如下:
#include <bits/stdc++.h>
template <typename ... Tail> class Tuple;
template<> class Tuple<> {};
template <typename Value, typename ... Tail>
class Tuple<Value, Tail ...> : Tuple<Tail ...> {
Value Val;
public:
Tuple() {}
Tuple(Value value, Tail ... tail) : Val(value), Tuple<Tail ...>(tail ...) {}
Value value() { return Val; }
Tuple<Tail ...> next() { return *this; }
};
int main() {
Tuple<char, double, std::string> tuple('1', 1.5, "Hello World");
std::cout << tuple.value() << std::endl;
std::cout << tuple.next().value() << std::endl;
std::cout << tuple.next().next().value() << std::endl;
return 0;
}
————————————————
版权声明:本文为优快云博主「LucienShui」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xs18952904/article/details/85221921
Tuple<Tail …> next() { return *this; }的理解如下:
class Tuple<Value, Tail …> : Tuple<Tail …> 是中继承关系。
return *this 只是一种类型的强制转换。
强制转换 成功后,返回基类的value