VS2022(17.4 及以上版本)提供了专门用于控制 NRVO(具名返回值优化)的编译器开关:
在 VS2022 解决方案资源管理器中,右键点击你的项目
→
→
选择 属性(Properties)。
展开 配置属性(Configuration Properties)
→
→
C/C++
→
→
命令行(Command Line)。
在 附加选项(Additional Options) 输入框中,添加以下参数:
code
Text
/Zc:nrvo-
(注:/Zc:nrvo- 末尾有个减号,代表关闭 optional NRVO12)
点击 应用 并重新编译运行2。
效果:即使在 Release 模式或 C++20 模式下,MSVC 也会强制保留拷贝/移动构造逻辑,从而触发拷贝构造函数12。