# 2.auto、decltype和decltype(auto)的用法 ## 1.auto 编程时常常需要把表达式的值赋给变量,这就要求声明变量时清楚的知道表达式的类型。然而有些情况是声明的变量的类型我们并不知道,比如在模板编程时。为了解决这个问题,C++11引入了auto类型说明符,用它来让编译器
decltype(auto)是C++14新增的类型指示符,可以用来声明变量以及指示函数返回类型。在使用时,会将“=”号左边的表达式替换掉auto,再根据decltype的语法规则来确定类型。举个例子:
decltype(auto)var=x;// 若x的类型是int,则var的类型也为in 7、auto与const结合 auto 与 const 结合的用法: 当类型不为引用时,auto 的推导结果将不保留表达式的 const 属性; 当类型为引用时,auto 的推导结果将保留表达式的 const 属性。 我们通过实例理解一下: intx=0;constauton=x;//n 为 const int ...
intfunc(int,int){intx;returnx;}class Base{public:intx=0;};intx1=1;// (1) decltype(x1)为intconstint&x2=2;// (2) decltype(x2)为const int&constBase b;b.x;// (3) decltype(b.x)为intinta[10];// (4) decltype(a)为int[10]decltype(func);// (5) 结果为int(int, int) (1...
auto与decltype的区别 auto关键字 C++11中新标准引入了auto类型说明符,该关键字能够让编译器在编译阶段去分析表达式所属的类型。 常规使用示例代码如下所示: int value1 = 0; int value2 = 10; float v3 = 5.45; auto sum = value1+value2;//sum类型为int类型 auto sum2 = value1 + v3;//sum2类型为...
decltype 注意点:1. decltype并不会执行表达式,只是推导类型。2. 当你从一个不加括号的变量名上使用...
auto 和 decltype 是 C++11 引入的两个关键字,它们增强了类型推导机制,使得代码更加简洁、灵活且易于维护。下面是对这两个关键字的说明以及使用案例。 1. auto auto 关键字允许编译器根据初始化表达式自动推导出变量的类型。这在处理复杂类型或者避免重复冗长的类型名称时特别有用。
例中 decltype(auto) 等价于 decltype(r),r 是初始化表达式。总结:auto 和 decltype 各有不同,...
auto 关键字和 decltype 关键字的区别 对于decltype 所用的表达式来说,如果变量名加上一对括号,则得到的类型与不加上括号的时候可能不同。 如果decltype 使用的是一个不加括号的变量,那么得到的结果就是这个变量的类型。但是如果给这个变量加上一个或多层括号,那么编译器会把这个变量当作一个表达式看待,变量是一个...
decltype(std::move(3 + 5)) v3 = 0; // v3 的类型是 int&&,因为std::move将表达式转换为右值 decltype(3 + 5) v4; // v4 的类型是 int ```3. 对于auto和decltype结合使用的情况:```cpp auto v5 = 4; // v5 的类型是 int auto &v6 = v5; // v6 的类型是 int& ```4...