gpt4 book ai didi

c++ - 同时递归多个参数包

转载 作者:行者123 更新时间:2023-12-04 11:38:48 24 4
gpt4 key购买 nike

在 C++ 中是否可以同时递归多个(在我的情况下为两个)参数包?如何?
为了更好地了解我的要求,我目前有一个类模板,如下所示:

template<template<typename> class C, typename... Rest>
class Inherit {};
template<template<typename> class C, typename T, typename... Rest>
class Inherit<C, T, Rest...> :
public C<T>,
public Inherit<C, Rest...>
{
};
我在另一个类中使用这个类模板,它带有一个参数包 Ts让该类从模板化接口(interface)多次继承。例如:
template<typename T>
class Interface
{
...
};

template<typename... Ts>
class Example :
public Inherit<Interface, Ts...>
{
};
现在,我想做的是:
template<typename T, const char* N>
class Interface
{
...
};

template<typename... Ts, const char*... Ns>
class Example :
public Inherit<Interface, Ts..., Ns...>
{
};
我需要一个模板 Inherit可以递归并从 Ts 中选取一个元素的类和 Ns一次参数包(假设参数包 TsNs 具有相同的长度)。我对模板编程不够精通,不知道这是否可能?

最佳答案

我认为你不需要这个 Inherit基于您提供的示例的类模板。这是我如何编写您的第一个示例:

template<typename T>
class Interface
{
...
};

template<typename... Ts>
class Example : public Interface<Ts>...
{
};
和你的第二个例子:
template<typename T, const char* N>
class Interface
{
};

template<typename, const char*...>
class Example;

template<typename... Ts, const char*... Ns>
class Example<std::tuple<Ts...>, Ns...> : public Interface<Ts, Ns>...
{
};

关于c++ - 同时递归多个参数包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69392133/

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