# decltype类型指示符
使用情况:从表达式的类型推断出要定义的变量的类型,但是不用计算表达式的初始值。C++11新标准引入了类型说明符 `decltype` ,它主要的作用就是选择并返回操作数的数据类型。在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。
`decltype` 处理顶层 `const` 和引用的方式与 `auto` 有点不同。如果 `decltype` 使用表达式是一个变量,则 `decltype` 返回该变量的类型,包括顶层 `const` 和引用在内。
```c++
const int ci = 0, &cj = ci;
decltype(ci) x = 0; //x的类型是const int
decltype(cj) y = x; //y的类型是const int&, y绑定到变量x
```
`decltype` 和 `auto` 另一个重要的区别是,`decltype` 的结果类型与表达式形式密切相关。有一种情况需要特别注意。