auto 虽然在书写格式上比 decltype 简单,但是它的推导规则复杂,有时候会改变表达式的原始类型;而 decltype 比较纯粹,它一般会坚持保留原始表达式的任何类型,让推导的结果更加原汁原味。 从代码是否健壮的角度考虑,我推荐使用 decltype,它没有那么多是非;但是 decltype 总是显得比较麻烦,尤其是当表达式比较复杂时,例如: vec
和原来那些只对应某种特定的类型说明符(例如 int)不同 auto让编译器通过初始值来进行类型推演。从而获得定义变量的类型,所以说auto定义的变量必须有初始值。 (2)decltype 有的时候我们还会遇到这种情况,我们希望从表达式中推断出要定义变量的类型,但却不想用表达式的值去初始化变量。还有可能是函数的返回类型为某表达...
auto和decltype 的作用有点相似,都可以推断某个表达式的具体类型,当我们希望从表达式的值推断出要定义的变量的类型,但不想用该表达式的值初始化变量时,可以使用decltype,作用是选择并返回操作数的数据类型,但并不计算表达式的值。如果decltype 使用的表达式不是一个变量,则decltype返回表达式结果对用的类型,”如果我们仅...
推导出来类型是指针的话,那么在变量定义的时候 auto a=&b; auto*a; 1. 2. 二、decltype
decltype不会直接计算表达式的值 变量 #include<iostream>#include<string>#include#include<boost/type_index.hpp>using namespacestd;classTest{public:inti;intj; };intmain(){constinti =0;constint& def_i = i;autoj1 = i; decltype(i) j2 =15;//j2 = const int,如果decltype中是个变量,则变量的con...
现代C++之理解decltype decltype用于生成变量名或者表达式的类型,其生成的结果有的是显而易见的,可以预测的,容易理解,有些则不容易理解。大多数情况下,与使用模板和auto时进行的类型推断相比,decltype作用于变量名或者表达式只是重复了一次变量名或者表达式的确切类型: ...
auto 关键字用于声明具有特定类型的变量,而 decltype 提取该变量类型。auto 和 decltype 都基于类型推断,即自动推断数据类型。 让我们看一个使用 decltype 运算符在 C++ 中查找变量类型的示例。 #include <bits/stdc++.h> #include <cstring> using namespace std; ...
编译器错误 C3552 应该为“decltype(auto)” 编译器错误 C3553 decltype 应为表达式而不是类型 编译器错误 C3554 “type”不能与任何其他类型说明符组合 编译器错误 C3555 “decltype”的参数不正确 编译器错误 C3556 “expression”:“decltype”的参数不正确 编译器错误 C3557 已过时。
1. decltype关键字 (1)auto所修饰的变量必须被初始化,编译器才能通过初始化来确定auto所代表的类型,即必须先定义变量。 (2)decltype可以在编译期推导出一个变量或表达式的结果类型(但不会真正计算表达式的值),并且使用这个结果定义新的变量。 【实例分析】获取表达式的类型 ...
问题:请解释C++11中的类型推导和decltype关键字的作用。 参考答案:类型推导允许编译器自动推断变量的类型,如使用auto关键字。decltype关键字用于查询表达式的类型,而不评估它。例如: cpp int x = 10; decltype(x) y = 20; // y is of type int