c++笔记——decltype类型指示符
c++11新标准中decltype类型指示符:作用是选择并返回操作数的数据类型
在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。
decltype与引用
(1)如果表达式的内容是解引用,则decltype将得到引用类型
(2)如果decltype给变量加上一层或多层括号,编译器就会把它当成一个表达式,decltype会得到引用类型
int fun(){ return 2; } void decltype_test(){ decltype(fun()) sum = 2.5;//发生了类型转换 cout << "sum = " << sum << endl; const int ci = 0, &cj = ci; decltype(ci) x = 0; decltype(cj) y = x; // decltype(cj) z ;// error: ‘z’ declared as reference but not initialized //decltype和引用 int i = 32, *p = &i, &r = i; decltype(r+0) b; //如果表达式的内容是解引用,则decltype将得到引用类型 //如下的c是int&引用类型,而不是int类型 // decltype(*p) c;//error: ‘c’ declared as reference but not initialized //如果decltype使用的是一个不加括号的变量,则得到的结果就是该变量的类型 //如果decltype给变量加上一层或多层括号,编译器就会把它当成一个表达式,decltype会得到引用类型.变量是一种可以作为赋值语句左值的特殊表达式 //decltype((i)) d;// error: ‘d’ declared as reference but not initialized decltype(i) e; }
作者:水水滴答
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。