首页 > 编程语言 > 详细

c++11新特性之引用折叠

时间:2021-05-23 09:04:05      阅读:31      评论:0      收藏:0      [点我收藏+]

引用折叠的前提是出现了引用的引用,有点绕。我们不能直接定义引用的引用,但是可以间接定义。

通过类型别名或者通过模板参数间接定义,多重引用最终折叠成左值引用或者右值引用,多余的忽略

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新特性之引用折叠

原文:https://www.cnblogs.com/cppcoder/p/14800387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!