使用auto c ++检索存储元组的值

时间:2015-01-21 00:36:24

标签: c++ templates base-class stdtuple

如果我将一个元组存储在一个类中:

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),但由于我的元组已经存储,这将无法真正帮助。是否有另一种方法可以使自动返回类型为元组?

1 个答案:

答案 0 :(得分:3)

由于returnTuple()需要统一的返回类型,否则,您无法执行此操作。你需要想出一些方法以统一的方式表达元组,可能是通过多态类型,或者是受歧视的联合的载体等。