auto_
//
decltype
01 对比 auto
auto 表达式做右值 初始化变量 并 赋予变量 表达式结果类型
decltype 只 赋予变量 表达式结果类型 但 不用表达式的值 初始化变量
02 用法:
01 想让结果类型为 & 所绑定的类型 可以将引用变量成为表达式的一部分 eg. r+0
02 解引用操作 (*p) 的结果类型为 & ( *p 正如 & 一样 得到指针所指对象 也可为对象赋值 )
03
decltype( (变量) ) 结果一定为 & ( 编译器视其为 可作左值的特殊表达式 )
decltype( 变量 ) 只有当变量类型为 & 或 * 时 结果才为 & ( 结合 02 )
04 ( 有关const... )
// eg.
const int n=0, &r=n;
decltype( n ) x=0; // true x 为 const int
decltype( r ) y=x; // true y 为 const int& 绑定至 x
decltype( r ) z; // false z 为 const int& 必须初始化
int i=1,*p=&i,&r=i;
decltype( r+0 ) a; // true 加法结果为 int
decltype( *r ) b; // false b 为 int& 必须初始化
decltype( (i) ) c; // false c 为 int& 必须初始化
decltype( i ) d; // true d 为 int
|