c++11:decltype

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

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 &

今天的文章c++11:decltype分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9495.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注