加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:47:23 所属栏目:百科 来源:网络整理
导读:我有一个函数,我想让变量返回计算值从函数的返回类型自动推导出来. 我已经看到Decltype for return of a function的成员函数,我知道使用decltype(func())var我可以得到返回类型.但这只适用于没有参数的函数.如果我有一个参数我必须decltype(func(/ *一些虚拟
我有一个函数,我想让变量返回计算值从函数的返回类型自动推导出来.

我已经看到Decltype for return of a function的成员函数,我知道使用decltype(func())var我可以得到返回类型.但这只适用于没有参数的函数.如果我有一个参数我必须decltype(func(/ *一些虚拟值可转换为参数类型* /))来获取返回类型.

是否有任何方法可以执行上述操作而无需指定虚拟值?

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读