网站首页 文章专栏 右值引用的小坑
右值引用的小坑
编辑时间:2021-06-04 05:07:44 作者:qicosmos 2条评论


    出自:purecpp

    地址: www.purecpp.org

    转载请注明出处!


来说两句吧
登录才能发表评论。
最新评论
  • qicosmos
    loop 2021-06-04 22:15:57

    它只可能这么设计,否则由于函数参数不可能知道来者是自动变量的引用还是引用的引用,调用者通过const Type&参数传进去的变量可能在被调用者内部偷偷被move走,导致此后调用者陷入不可名状的迷惑。相关的坑还有一个,是这个问题造成混淆的一个常见诱因;既函数指针和成员函数指针在生成时会自动丢弃参数列表中类型的顶层cv限定符(top-level cv-qualifier in function parameters)的问题,这可能在类型计算过程中造成意想不到的麻烦,但这么设计在编译原理上也是符合逻辑的。实际上参数列表中各类型的顶层cv限定符、原生数组的边界信息,在函数类型定义中本来就自动丢弃,类似的还有参数列表中的函数类型会被自动转换成函数指针。但由于每个函数本身的类型不同,所以这个规则往往只在他们转化成函数指针的时候才会被注意到。但模板参数自动类型推导又可以推导出原生数组长度,为了解决类型冲突,往往又需要手动decay。要简单的记忆这些规则,可以理解为:凡编译后需要对外调用方传入的地址进行寻址的操作,编译器都会保留cv限定符以保护实际数据,不需寻址的cv限定符在调用中都不保留。

  • qicosmos
    lijixiang2010 2021-06-06 23:07:14

    装了VS的插件 ReSharper 会有提示。挺好用的。

Absolutely

purecpp

一个很酷的modern c++开源社区


[社区开源项目列表,点击前往]


purecpp社区自2015年创办以来,以“Newer is Better”为理念,相信新技术可以改变世界,一直致力于现代C++研究、应用和技术创新,期望通过现代C++的技术创新来提高企业生产力和效率。


社区坚持只发表原创技术文章,已经累计发表了一千多篇原创C++技术文章;


组织了十几场的C++沙龙和C++大会,有力地促进了国内外C++开发者之间的技术交流;


开源了十几个现代C++项目,被近百家公司所使用,有力地推动了现代C++在企业中的应用。


期待更多的C++爱好者能参与到社区C++社区的建设中来,一起为现代C++开源项目添砖加瓦,一起完善C++基础设施和生态圈。


微信公众号:purecpp, 社区邮箱: purecpp@163.com


友情链接