C++ decltype规则定义左值或PR值
decltype语句定义其参数的类型:C++ decltype规则定义左值或PR值,c++,decltype,C++,Decltype,decltype语句定义其参数的类型: 表达式的类别是左值,然后decltype生成T& 如果表达式的值类别是prvalue,则decltype生成T 这里的区别是什么?额外的括号是如何工作的? 双括号如何构成左值范畴 int a = 0; decltype (a) b = a; cout << is_same<decltype(b), int>::value << '\n'; decltype ((a)) c = a; cout << is
- 表达式的类别是左值,然后decltype生成T&李>
- 如果表达式的值类别是prvalue,则decltype生成T
双括号如何构成左值范畴
int a = 0;
decltype (a) b = a;
cout << is_same<decltype(b), int>::value << '\n';
decltype ((a)) c = a;
cout << is_same<decltype(c), int&>::value << '\n';
inta=0;
decltype(a)b=a;
coutdecltype
有一些功能可以让您准确地表达您想要的内容
如果decltype
中的表达式是变量/函数的名称(也称为id表达式),则生成的类型就是该变量/函数的类型
否则,如果表达式为任何其他类型且其左值类型为T
,则生成的类型为T&
,或者如果其PR值类型为T
,则生成的类型为T,将“额外”括号解析为表达式。