decltype / auto 是具有类型推导功能的 类型 描述/占位 符
decltype
: 获取对象或表达式的类型auto
: 类型自动推导
decltype 可以获取变量类型, (并不同于python的type,但python能打印出type获取的名称, C++通过typeid实现)。
int main()
{
int val = 10;
char ch = 'b';
string str = "baidu";
cout << typeid(val).name() <<endl;
cout << typeid(ch).name() <<endl;
cout << typeid(str).name() <<endl;
return 0;
}
结果为:
在特殊场合有一定作用,比如在基于部分闭源的库开发一些功能的时候可以获取未知类型变量的类型。但不确定IDE能否基于decltype的推导自动获知类似结构而给与编程时的提示能力。
如果希望简化复杂类型的名称,感觉在可读性或者效率上不如using 或者typedef 好。
在实现较为自动化的编程框架的时候,decltype似乎显得比较有用了,与auto功能个别方面重叠,但比auto强大,auto只在赋值是推导,而decltype 可以推导类型而定义新的具有初值的变量。
另外在对于lambda闭包的类似使用上也很有用。