在 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中选取一个元素(假设参数包和具有相同的长度)。我对模板编程不够熟悉,不知道这是否可能?TsNsTsNs
template <typename... Ts, const char*... Ns> class Example;是错的。
你可能想要类似的东西(无递归)
template<typename T, const char* N>
class Interface
{
// ...
};
template<typename T, typename Names> class Example;
template<typename... Ts, const char*... Ns>
class Example<std::tuple<Ts...>, std::integer_sequence<const char*, Ns...>> :
public: Interface<Ts, Ns>...
{
};
Run Code Online (Sandbox Code Playgroud)
Interface<Ts, Ns>...要求两个包具有相同的尺寸。
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |