我可能会问一个愚蠢的问题,但我在这里查看了RVO的维基百科页面,并且无法停止想知道这种行为是否错误.我在我的机器上尝试了它,尽管优化水平,RVO仍然完全被踢了.如果确实有一些大的构造happenning?我知道它不应该,但如果呢?我无法理解为什么在构造函数中存在副作用时仍会发生RVO.
编辑:-fno-elide-constructors似乎停止RVO.但问题仍然存在.
编辑2:更严重的是,有多少人知道这样的事情?它可能在标准中,但它仍然是一个非常难看的功能,因为我看到它.至少编译器应该默认禁用它,并为知道这一点的人提供一个开关.:)
编辑3:我仍然坚持认为这真的很糟糕.:).我不认为我知道任何其他语言约束直接违背语言的语法.其他一切都会引发编译器或链接器错误吗?