c++ - 使用在每种类型的可变参数模板上模板化的类初始化元组
问题描述
标题可能很难解析,所以这就是我的意思。假设我有几个类 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...) { }
};
因为那样我最终会得到一个 Bs 元组。是否有一种符合人体工程学的方法来包装 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>>
。
推荐阅读
- amazon-web-services - 在 S3 中编辑后触发文件下载到 EC2 Windows 实例
- mongoose - 如何独立处理猫鼬中多个唯一性的错误?
- batch-file - 如何将时间戳附加到文件名?
- swift - macOS Swift QuickLook 警告:在面板没有控制器时调用 setDelegate 和 setDataSource
- virtual-machine - CometD 故障转移能力 - 重启期间的 VM 切换
- javascript - react-select 在状态变化时不重置值
- javascript - 在 Javascript 函数中丢失范围
- security - Kubernetes pod 安全策略 uid/gid 范围
- fortran - Fortran - 变量的使用
- azure-active-directory - 通过身份验证 (PTA) 和密码哈希同步 (PHS)