C++-decltype关键词

简介

有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量。C++11引入了decltype类型说明符,它的作用是选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。

用法

1
decltype( expression ) value;

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int a;
decltype(a) b; // b is type int
decltype(a+b) ab; // ab is type int

double x = 5.5;
double y = 7.9
double &rx = x;
const double *pd;
decltype(x) w; // w is type double
decltype (rx) u = y; // u is type double &
decltype(pd) v; // v is type const double *

int fun(int);
decltype (fun(3)) m; // m is type int
// 这里并不会实际调用函数。编译器通过查看函数的原型来获悉返回类型,而无需实际调用函数。

double x = 4.4;
decltype((x)) r1 = x ; // r1 is double &
decltype(x) r2 = x; // r2 is type double