使用每种类型的可变参数模板上的类模板初始化元组



标题可能很难解析,所以我的意思是。假设我有几个A,B1,B2,B3类...Bn,我想在某个 B 类上保存 A 的模板元组。有效的最终结果可能是类似tuple<A<B3>, A<B1>> _chain.这将包含在我们称之为 C 的容器类中。我正在寻找的是用一堆 B 类型初始化 C,然后将其包装在我的 A 类中。我不能简单地做

template<class... T>
class C
{
std::tuple<T...> _chain;
public:
C(const T&... t) : _chain(t...) { }
};

因为那样我最终会得到一个 B 元组。有没有一种符合人体工程学的方法来包装 init 步骤 (_chain(t...)(,以便我最终会在我传递给类的 B 类上得到一个 A 模板的元组?

你的意思是这样的:

template<template <typename> typename Base, class... T>
class C
{
std::tuple<Base<T>...> _chain;
public:
C(const Base<T>&... t) : _chain(t...) { }
};

你可以这样使用它:C<A, B1, B2, B3> c;

然后_chain将是一个元组tuple<A<B1>, A<B2>, A<B3>>

最新更新