在编译时重新解释模板类型
Reinterpret template type at compile time
我想创建一个 class,它基本上包含一个私有属性 :
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;
};
但我希望能够写一些简单的东西,比如:
A<int, double, std::string> a;
它会自动构建相应的:
std::tuple<std::vector<std::reference_wrapper<int>>, std::vector<std::reference_wrapper<double>>, std::vector<std::reference_wrapper<std::string>>> t;
(对于元组中任意数量的参数)
所以我只想将任何 T 转换为 std::reference_wrapper< T > 并将其传递给元组。
我怎样才能做到这一点 ?
谢谢!
只需扩展包:
template <typename ...Args>
struct Foo
{
std::tuple<std::vector<std::reference_wrapper<Args>>...> t;
};
我想创建一个 class,它基本上包含一个私有属性 :
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;
};
但我希望能够写一些简单的东西,比如:
A<int, double, std::string> a;
它会自动构建相应的:
std::tuple<std::vector<std::reference_wrapper<int>>, std::vector<std::reference_wrapper<double>>, std::vector<std::reference_wrapper<std::string>>> t;
(对于元组中任意数量的参数)
所以我只想将任何 T 转换为 std::reference_wrapper< T > 并将其传递给元组。 我怎样才能做到这一点 ? 谢谢!
只需扩展包:
template <typename ...Args>
struct Foo
{
std::tuple<std::vector<std::reference_wrapper<Args>>...> t;
};