gpt4 book ai didi

c++ - 使用从外部参数包中获取的参数类型声明一个函数

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

假设我有某种类型列表

template<typename... Types> struct TypeList {};

现在在其他一些类中我可以生成这样一个 TypeList以多种方式。

template<class T> struct MyClass {
using MyList = TypeList<T, typename Something<T>::type, SomethingElse>;
// ...
};

如何使用从该类型列表中提取的参数类型声明一个方法?例如,如果我设置 MyList = TypeList<int, float, const char*> , 求一个方法

void my_method(int, float, const char*)

待申报。

最佳答案

您可以从实现该方法的基类派生:

template <typename> struct MethodProvider;

template <typename ...Args>
struct MethodProvider<TypeList<Args...>>
{
void my_method(Args ...args);
};

template <typename T>
struct MyClassAux
{
using MyList = TypeList<T, typename Something<T>::type, SomethingElse>;
};

template <typename T>
struct MyClass
: private MyClassAux<T>
, private MethodProvider<typename MyClassAux<T>::MyList>
{
using typename MyClassAux<T>::MyList;
using MethodProvider<typename MyClassAux<T>::MyList>::my_method;

// ...
};

关于c++ - 使用从外部参数包中获取的参数类型声明一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37689548/

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