gpt4 book ai didi

c++ - 带参数的自由函数,获取返回类型

转载 作者:太空狗 更新时间:2023-10-29 20:13:57 26 4
gpt4 key购买 nike

我有一个函数,我想让返回计算值的变量从函数的返回类型自动推导出来。

我看过Decltype for return of a function对于成员函数,我知道使用 decltype(func()) var 我可以获得返回类型。但这只适用于没有参数的函数。如果我有一个参数,我必须通过 decltype(func(/* some dummy value conversionble to argument type*/)) 来获取返回类型。

有没有办法在不需要指定虚拟值的情况下执行上述操作?

auto func(int a) -> std::deque<decltype(a)> {

// lots of code

/* ideally */
decltype(func)::return_type result;

/* fill result*/

return result;
}

最佳答案

您需要指定参数类型,因为不同的重载可以有不同的返回类型。

您可以使用declval 指定一个伪参数:

#include <utility>

decltype(func(std::declval<ArgType>())) result;

或者您可以通过使用类型特征来避免提供虚拟值:

#include <type_traits>

std::result_of<decltype(func), ArgType>::type result;

关于c++ - 带参数的自由函数,获取返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18761507/

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