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

c – 是否可以在不向其传递参数的情况下获取函数的返回类型?

发布时间:2020-12-16 10:33:32 所属栏目:百科 来源:网络整理
导读:显然,你可以使用decltype(foo())获取函数的返回类型,但是如果foo接受不起作用的参数,你必须将一些伪参数传递给foo才能使它工作.但是,有没有办法获得函数的返回类型而不必传递任何参数? 解决方法 假设返回类型不依赖于参数类型(在这种情况下你应该使用类似st
显然,你可以使用decltype(foo())获取函数的返回类型,但是如果foo接受不起作用的参数,你必须将一些伪参数传递给foo才能使它工作.但是,有没有办法获得函数的返回类型而不必传递任何参数?

解决方法

假设返回类型不依赖于参数类型(在这种情况下你应该使用类似std :: result_of的东西,但是你必须提供这些参数的类型),你可以写一个简单的类型特征,让你推断出从函数类型返回类型:

#include <type_traits>

template<typename T>
struct return_type;

template<typename R,typename... Args>
struct return_type<R(Args...)>
{
    using type = R;
};

int foo(double,int);

int main()
{
    using return_of_foo = return_type<decltype(foo)>::type;
    static_assert(std::is_same<return_of_foo,int>::value,"!");
}

(编辑:李大同)

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

    推荐文章
      热点阅读