在编译时重新解释模板类型

Sto*_*der 2 c++ tuples variadic-templates c++14

我想创建一个类,它基本上包含一个私有属性:

template<typename TA, typename T2, ... Tn> // Use something like <typename... Tn> ?
class A
{
    public:
    A(){};
    ~A(){};

    std::tuple<std::vector<std::reference_wrapper<T1>>, std::vector<std::reference_wrapper<T2>>, ...> t;
};
Run Code Online (Sandbox Code Playgroud)

但我希望能够写出一些简单的东西:

A<int, double, std::string> a;
Run Code Online (Sandbox Code Playgroud)

并自动构建相应的:

std::tuple<std::vector<std::reference_wrapper<int>>, std::vector<std::reference_wrapper<double>>, std::vector<std::reference_wrapper<std::string>>> t;
Run Code Online (Sandbox Code Playgroud)

(对于元组中的任意数量的参数)

所以我只想将任何T转换为std :: reference_wrapper <T>并将其传递给元组.我怎样才能做到这一点 ?谢谢 !

Ker*_* SB 7

只需扩展包装:

template <typename ...Args>
struct Foo
{
    std::tuple<std::vector<std::reference_wrapper<Args>>...> t;
};
Run Code Online (Sandbox Code Playgroud)