c++11:decltype

1.首先针对decltype有两种表达方法,分别是不带括号的和带括号的。
2.其次,对于这两种表达方式的区别体现在变量上:
只要是带了括号就取被推断变量的引用,不带括号就直接取被推断变量定义时的类型
3.另外,如果被推断的是函数调用,则无论是带括号还是不带括号得到的都是函数的返回类型。
4.最后,如果被推断的是运算表达式,如果表达式得到的右值,则无论是带括号还是不带括号得到的都是被推断的类型;如果表达式得到的是左值,则无论是带括号还是不带括号得到的都是被推断的引用。

具体的,2,3,4条对应的代码如下:

	int n, x = 1;
	const int m = 0, z = 1;
	//2.
	decltype(n) a; //a->int
	decltype((n)) b = n; //b->int &
	decltype(m) c = 1; //c->const int
	decltype((m)) d = n; //d->const int &
	//3.
	decltype(test()) e;//e->int
	decltype((test())) f;//f->int
	//4.
	decltype(1 + 2) g;//g->int
	decltype((1 + 2)) h;//h->int
	decltype(m + z) i = m;//i->int
	decltype((m + z)) j = z;//j->int
	decltype(x += 10) k = x;//k->int &
	decltype((x += 10)) l = x;//l->int &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值