auto 和 decltype 的区别 auto 和 decltype 都是类型推断的方式 区别如下: 1、auto 是通过编译器计算变量的初始值来推断类型,decltype同样也是通过编译器来分析表达式进而得到它的类型,但是它不用将表达式的值计算出来 2、编译器推断出来的auto类型可能与初始值类型不同,众多周知,使用引用实际是使用引用的对象,特别是...
auto 虽然在书写格式上比 decltype 简单,但是它的推导规则复杂,有时候会改变表达式的原始类型;而 decltype 比较纯粹,它一般会坚持保留原始表达式的任何类型,让推导的结果更加原汁原味。 从代码是否健壮的角度考虑,我推荐使用 decltype,它没有那么多是非;但是 decltype 总是显得比较麻烦,尤其是当表达式比较复杂时,例如: ...
三. decltype 和 auto 区别 decltype在处理顶层const和引用的方式与auto有些许不同,如果decltype使用的表达式是一个变量,则decltype返回该变量的类型(包括顶层const和引用在内)。 1constintci =42, &cj =ci;23decltype(ci) x =0;//x 类型为const int4auto z = ci;//z 类型为int56decltype(cj) y = x;...
auto:主要用于简化变量的声明,特别是当变量的类型比较复杂或者使用模板时。它可以提高代码的可读性和可维护性。 decltype:主要用于需要表达式类型的地方,如模板函数的返回类型、函数模板的参数类型推导等。它可以让代码更灵活,适应不同的类型。 3.表达式的处理: auto:auto关键字后面必须跟一个初始化表达式,编译器根据这...
decltype给出传递给它的表达式的declared类型。auto的作用与模板类型演绎相同。因此,例如,如果你有一个...
decltype 与 auto 不同,decltype 会完整获取其参数的类型信息,如:inti=3;constint&r=i;decltype(r...
decltype(auto) 可以推导出对象类型,也可以推导出引用类型。具体取决于 decltype 应用到 return 语句中...
第4 行代码中,auto 被推导为 int 类型,这个很容易理解,不再赘述。 第5 行代码中,r1 是 const int & 类型,auto 也被推导为 const int 类型,这说明当 const 和引用结合时,auto 的推导将保留表达式的 const 类型。 最后我们来简单总结一下 auto 与 const 结合的用法: ...
auto 和 decltype 都是C++11 新增的关键字,都用于自动类型推导,但是它们的语法格式是有区别的,如下所示: auto varname = value; //auto的语法格式 decltype(exp) varname [= value]; //decltype的语法格式 其中,varname 表示变量名,value 表示赋给变量的值,exp 表示一个表达式,方括号[ ]表示可有可无。