小编Nic*_*len的帖子

多个参数包的同时递归

在 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...>
{
};
Run Code Online (Sandbox Code Playgroud)

我在另一个类中使用这个类模板,该类采用参数包Ts让该类从模板化接口多次继承。例如:

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

template<typename... Ts>
class Example :
    public Inherit<Interface, Ts...>
{
};
Run Code Online (Sandbox Code Playgroud)

现在,我想做的是:

template<typename T, const char* N>
class Interface
{
    ...
};

template<typename... Ts, const char*... Ns>
class Example :
    public Inherit<Interface, Ts..., Ns...>
{
};
Run Code Online (Sandbox Code Playgroud)

我需要一个模板类,它可以递归并立即从和参数包Inherit中选取一个元素(假设参数包和具有相同的长度)。我对模板编程不够熟悉,不知道这是否可能?Ts …

c++ templates

6
推荐指数
1
解决办法
117
查看次数

标签 统计

c++ ×1

templates ×1