|
|
1
2
在C++03中,这需要
在C++11或14中,它要求对象是可移动或可复制的。省略仍然存在;未进行移动或复制。 在C++17中,这里没有移动或复制到elide。
在任何情况下,在实践中,
这在C++03中无效。
在C++11及更高版本中,
与版本1相同,只是C++17的行为类似于C++11/14;看似无害的更改可能会迫使编译器实际移动
在实践中,这与版本2的行为类似。在构造时会发生额外的移动(在C++03中复制)
1和3都将编译为相同的运行时代码。3稍微更脆弱。
作为一个可能使3比1慢的示例,如果您有if语句:
突然间,许多编译器将被迫移动
|