例如:
在接受的答案https://stackoverflow.com/a/14623480/1423254中,
复制省略和 RVO 是否仍然适用于没有移动构造函数的类?
是的,RVO 仍然起作用。实际上,编译器应该选择:RVO(如果可能)
在接受的答案https://stackoverflow.com/a/38043447/1423254中,
在非保证复制省略规则下,这将创建一个临时,然后从该临时移动到函数的返回值。该移动操作可能会被省略,但即使从未使用过,T 仍必须具有可访问的移动构造函数。
关键是我认为 RVO 和“左值移动”(或如何调用它们)是 2 个完全独立的操作,但我的同事告诉我,要启动 RVO,返回的类需要一个移动构造函数。所以我检查了互联网和SO,显然,无法快速找到信息......