用于函数
不实际调用函数,只是用返回值的类型
#include <iostream>
using namespace std;
int f()
{
return 0;
}
int main() {
decltype(f()) a=0;
return 0;
}
用于普通变量
用于引用
int i=0, &r = i, *p = &i;
decltype(r) b; //xxx,int &,必须初始化
decltype(r+0) b1; //int
用于指针
decltype(*p) c; //int &
解释:因为可以操作*p改变p所指向的对象,所以等效于通过引用方式改,所以不能是int
用于变量
注意双括号变量,不是双括号表达式
decltype(i) d; //int
decltype((i)) d; //int &