模板函数——后置返回值类型(trailing return type)

       后置返回值类型主要用于模板函数中,它是C++11推出的新用法。其中使用到了auto和decltype两种类型说明符。

       auto和decltype虽然都是类型说明符,但是二者是不同的:auto是根据推导初始值的类型来确定变量的类型,而decltype则只是确定类型,如下所示:

auto i = x + y;   //通过x+y的结果类型来推导出i的类型并对其初始化

decltype(x+y) i;    //通过x+y的结果类型来定义i的类型

       下面就来说一下后置返回值类型。

      现在写一个模板函数add:传入两个任意类型参数,返回两数之和。如果使用模板的话,大概可以写成这样:

template<typename T,typename Y>
XXX add(T v1, Y v2)
{
    return v1+v2;
}

      那么,这里的返回值应当是什么类型呢?如果传入的两个参数类型不同,那么情况也是不同的:如果一个是int,一个是double,那么返回值就是double;如果一个是int,一个是short,那么返回值就是int;如果一个是char,一个是short,返回值则是int。可见,返回值类型是与v1+v2这一结果的类型相关的。

       那么,可否直接把返回值也写成模板呢?如下所示:


                
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值