首页 > 代码库 > decltype typename

decltype typename

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;}