kaw*_*ken 0 c++ copy-elision as-if
为什么标准允许我的编译器应用复制省略,即使它涉及可见的副作用,从而打破了 as-if 规则?
当一个人保证复制省略时,这对我来说是有道理的,因为复制/移动的实际功能(这将调用程序行为的可见变化)不一定存在,但为什么/如何在 C+ 之前+17?
是不是因为编译器一般不能检测副作用(不知道是否可行)?
允许这种优化的情况涉及临时文件的副本。从概念上讲,这些应该没有可见的效果,但该语言允许类编写者将他们想要的任何内容放入复制构造函数中。
因此,复制构造函数有时实际上可能具有可见的副作用。严格来说,as-if 规则可能不适用。
人们认为这种优化足够有用,而且危害最小,值得包含在语言中。考虑到这种优化早于返回值总是被复制的移动语义。
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |