如果我将一个元组存储在一个类中:
class BaseA { } //So that I can store A in a class
template <typename Args...>
class A : public BaseA {
public:
//I'm omitting the constructors
private:
std::tuple<Args...> storedTup;
}
您是否可以稍后通过执行此操作来检索值?
//Change BaseA
class BaseA {
public:
virtual ~BaseA(){}
auto returnTuple();
}
//Change A
template <typename Args...>
class A : public BaseA {
public:
auto returnTuple() -> decltype(storedTup) {
return storedTup;
}
private:
std::tuple<Args...> storedTup;
}
我知道这不起作用,但有一个我忽略的简单修复。从我所看到的,decltype可以使用通过该函数传递的成员(在我的情况下为returnTuple),但由于我的元组已经存储,这将无法真正帮助。是否有另一种方法可以使自动返回类型为元组?
答案 0 :(得分:3)
由于returnTuple()
需要统一的返回类型,否则,您无法执行此操作。你需要想出一些方法以统一的方式表达元组,可能是通过多态类型,或者是受歧视的联合的载体等。