Item1:Deduced types

本文详细介绍了C++中模板类型推导的规则,包括对引用和指针的处理,通用引用的区别,以及数组和函数参数在模板类型推导中的特殊情况。重点解析了在不同情况下,模板参数如何推导出正确的类型,并强调了const和volatile特性的处理。
摘要由CSDN通过智能技术生成

C++98:the one for function templates

C++11: auto and decltype

C++14:拓展了auto和decltype可以使用的环境

 

Item 1 Understand template type deduction

1. 模板的类型推导是:auto。

Things to Remember:

  • 当template 类型推导的时候,参数如果是引用类型,会被对待成非引用类型。即 reference-ness is ignored
  • 当推导类型是通用引用参数,左值会得到特殊的对待。
  • 当推导类型为值类型,const和volatile 参数都被对待为 non-const和 non-volatile.
  • 当进行teamplate类型推导,参数是数组或者函数名称,会被衰减为指针,除非他们是初始化为ref。

 

在本Item中,使用了一个通用的类型来讲解模板是如何进行推导的。在以下的三种类型:

  • Case1 :ParamType 是一个指针或者是一个引用类型,但是不是通用引用(?)
  • Case2 :ParamType 是一个通用引用
  • Case3 :ParamType 既不是一个指针也不是一个引用

都是使用这个通用的模板:

template<typename T>
void f(ParamType param);

f(expr)

 

1> Case 1:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值