- 主题:如何理解c++17的强制要求copy elision
我的理解是
能不用copy ctor就不用
--
FROM 107.77.208.*
强制要求是指即使拷贝构造函数不存在或者私有,编译器应该能能进行优化。是对编译器的要求
举个例子。
假如类A只有一个缺省无参的构造函数,其他构造全部被标记为delete。
A a0,a1。
那么A a3(a0+a1)是合法的,因为可以优化。无需关注构造函数。
A a4(a0)是非法的,因为没有拷贝构造函数。
【 在 mvtec 的大作中提到: 】
: 我的理解是
: 能不用copy ctor就不用
: --
: ...................
--来自微微水木3.5.12
--
FROM 39.144.44.*
rule of 5
要么不定义,要么全定义
哪怕只要定义其中一个,就代表告诉编译器,我这个类有点特殊,你别优化
【 在 mvtec 的大作中提到: 】
: 我的理解是
: 能不用copy ctor就不用
--
FROM 122.224.174.*
我一般起手就把自定义类的copy和move禁用了,只有在需要的时候才打开
【 在 mvtec 的大作中提到: 】
: 我的理解是
: 能不用copy ctor就不用
--
FROM 117.176.187.*
看了一下MS这哥们写的,涉及到C++11和C++17的model的不同
https://devblogs.microsoft.com/cppblog/guaranteed-copy-elision-does-not-elide-copies/
--
FROM 114.241.227.*