c++11新特性之引用折叠
Posted 浪迹天涯的程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++11新特性之引用折叠相关的知识,希望对你有一定的参考价值。
引用折叠的前提是出现了引用的引用,有点绕。我们不能直接定义引用的引用,但是可以间接定义。
通过类型别名或者通过模板参数间接定义,多重引用最终折叠成左值引用或者右值引用,多余的忽略
typedef int&& new_type;
new_type& ok;
这个时候就形成了类型折叠 类似于int&&& ok;最后折叠成int& ok;
template<typename T> void test(T&& t);
如果参数传入一个引用类型例如int m=0;int& n=m;template<int&> test(n);这个时候也形成了引用折叠,最终参数保留了引用特性
template<typename T> void test6(T&& t)//传入引用就会形成折叠 { printf("%d\\n", t++); } int main(int narg, char**) { typedef int&& new_int; int n = 0; new_int& a=n;//引用折叠int&&& 最终成为int& a = 10; printf("%d\\n", n); test6(a); printf("%d\\n", n); system("pause"); return 0; }
以上是关于c++11新特性之引用折叠的主要内容,如果未能解决你的问题,请参考以下文章