gpt4 book ai didi

c++ - 在以函数为参数的模板函数中提取输入参数的类型

转载 作者:行者123 更新时间:2023-12-05 09:33:25 41 4
gpt4 key购买 nike

我有这个功能:

template<typename T, int (*F)(T&)>
void DoStuff(T& s)
{
auto an = make_any<T>(s);
cout << _GetDataFromAny<MyStruct, F>(an);
}

需要这样调用:

DoStuff<MyStruct, Fun>(s);

这很好用,但我不喜欢必须指定第一种类型,因为它是第二个参数签名的一部分。我希望能够推断出它,这样我就可以调用:

DoStuff<Fun>(s);

但是,我不知道如何在模板中指定需要从函数F的签名中推导出类型T。

这可能吗?

最佳答案

您可以编写一个助手来推断返回 int 的函数指针的参数类型:

template<typename T>
T arg_type(int(*)(T&));

然后稍微重写你的函数模板,将函数指针作为非类型模板参数,并从中找出参数类型

template<auto F, typename T = decltype(arg_type(F))>
void DoStuff(T& s) {
// ...
}

关于c++ - 在以函数为参数的模板函数中提取输入参数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67308570/

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