问题描述
根据C ++标准:
复制省略是允许的两种优化形式之一, 以及分配省略和扩展,(自C ++ 14起)
如果我没记错的话,只能在return,throw,catch和yield语句中使用复制省略。
void func(type x)
{
auto y = bar();
// do something with y
x.foo = y; // Can this be optimized?
return;
}
编译器标准在理论上是否允许在左值y
上使用move构造函数(可能通过将其隐式转换为xvalue)假设编译器足够聪明,可以确定该转换是安全/等效的(不同于answer中提到的特殊情况。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)