可变模板类的Getter

Getter for variadic template class

本文关键字:Getter      更新时间:2023-10-16

是否可以为可变的模板类设置类型化的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;

这正是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;