gpt4 book ai didi

c++ - 转换参数包类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:30 25 4
gpt4 key购买 nike

我有多个类共享相同的公共(public)类型定义

struct A { using Container = std::array<A, 3>; };
struct B { using Container = std::vector<B>; };
struct C { using Container = std::array<C, 5>; };

现在我有一个类,它获取仅包含有效类的参数包,但它必须存储容器的元组。伪代码:

template <typename... Modules>
struct Collector
{
std::tuple<Modules...::Container> mContainers;
};

有没有一种优雅的方式在解包期间应用::Container

最佳答案

你可以使用辅助特征

template<typename T>
using ContainerOf = typename T::Container;

template <typename... Modules>
struct Collector
{
std::tuple<ContainerOf<Modules>...> mContainers;
};

或者,您也可以在没有辅助特征的情况下像这样内联这个特征:

template <typename... Modules>
struct Collector
{
std::tuple<typename Modules::Container...> mContainers;
};

关于c++ - 转换参数包类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53366796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com