decltype((variable))总是引用类型,但是decltype(variable)只有当variable是引用类型时才是引用类型。
#include <iostream> #include <typeinfo> using std::cin; using std::cout; using std::endl; auto f(auto x) { return x+1;} auto f(auto x,auto y)->decltype(y){ return x-y; } double func() { cout << "func executed." << endl; return 2.5+3.6; } int main() { decltype(func()) sum; cout << typeid(sum).name() << endl; const int ci = 0, &cj = ci; decltype(ci) x = 0; decltype(cj) y = x; //decltype(cj) z; // compile error: ‘z’ declared as reference but not initialized cout << typeid(x).name() << endl; cout << typeid(y).name() << endl; int i = 10, *p = &i, &r = i; decltype(r + 0) b; //decltype(*p) c; // compile error: ‘c’ declared as reference but not initialized cout << typeid(b).name() << endl; decltype(i) u; //decltype((i)) v; // compile error: ‘v’ declared as reference but not initialized return 0; }
本文详细介绍了C++中decltype关键字的使用方法,包括其在不同变量类型下的表现,以及如何利用decltype来推导表达式的类型。同时,通过具体的代码示例展示了decltype在初始化引用变量时的注意事项。
1341

被折叠的 条评论
为什么被折叠?



