可変引数を保持しておいてそれを別な関数に渡すには?

こういうことがやりたい

template <class... Args>
void do_something(Args&&...)
{
}

template <class... Args>
class functor {
    std::tuple<Args...> args_;
public:
    functor(Args&&... args)
        : args_(std::move(args)...) {} // 可変引数をメンバに保持しておいて

    void operator()() const
    {
        // 保持しておいた可変引数を別な関数に渡す
        do_something(args_...);
    }
};

tupleを可変引数に変換(展開)、とかできないかなー