c++ template args inside class

Viewed 235

Hello I want to store template arguments inside class, see following code:

template<typename... Args>
class Test {
    private:
    Args... args;
    public:
    Test(Args... args) {
        this->args = args;
    }
}

But I am getting error:

main.cc:4:9: error: expected unqualified-id before ‘...’ token
    4 |     Args... args;

When I remove dots it says:

main.cc:4:10: error: parameter packs not expanded with ‘...’:
    4 |     Args args;
1 Answers

The usual solution is simply to use a tuple:

template<typename... Args>
class Test {
    private:
    std::tuple<Args...> args;
    public:
    Test(Args... args) : args{std::move(args)...} {}
};
Related