avatar10010 发表于 2014-11-4 23:27:59

decltype问题

本帖最后由 avatar10010 于 2014-11-4 23:29 编辑

#include <vector>
#include <iostream>
using namespace std;
int main()
{
      vector<int> v{ 1 };
      decltype(v) var = v;            // b为int&型別

      int c = 1;                              
      decltype((c)) a = c;                      // a为int&型別
      decltype(c) b = c;                        // b为int型别
}
问一下decltype什么时候返回引用,什么时候不返回引用
百度解释如下:
decltype类似于sizeof操作符,也不需对其操作数求值。粗略来说,decltype(e)返回类型前,进行了如下推导:
若表达式e指向一个局部变量、命名空间作用域变量、静态成员变量或函数参数,那么返回类型即为该变量(或参数)的“声明类型”;
若e是一个左值(lvalue,即“可寻址值”),则decltype(e)将返回T&,其中T为e的类型;
若e是一个x值(xvalue),则返回值为T&&;
若e是一个纯右值(prvalue),则返回值为T。


但还是看不懂啊,希望大家帮我解释一下,!!

Mikel 发表于 2014-11-14 19:44:16

你都用了两个()了都。

帅哥星 发表于 2014-12-2 20:07:59

页: [1]
查看完整版本: decltype问题