可变参数模板类的Getter

时间:2015-05-19 07:44:06

标签: c++ c++11

是否可以为可变参数模板类使用类型化的getter? 即像下面这样的东西,但它编译:

template<class... T>
class A {
public:
    A(T... params) {
        _params = { params... };
    }
    T... get(const size_t index) {
        return _params.at(index);
    }
private:
    std::vector<T...> _params;
};

然后可以使用:

A<std::string, int> foo(std::string("a"), 2);
std::string bar = foo.get(0).append("b");
int bar2 = foo.get(1) + 2;

1 个答案:

答案 0 :(得分:1)

这正是std::tuple的用途。

auto foo = std::make_tuple(std::string("a"), 2);
std::string bar = std::get<0>(foo).append("b");
int bar2 = std::get<1>(foo) + 2;