Код: Выделить всё
MyObj example()
{
MyObj a = MyObj(3);
return a += 1;
};
< /code>
не имеет оптимизации, тогда как: < /p>
MyObj example()
{
MyObj a = MyObj(3);
a += 1;
return a;
};
< /code>
имеет применение оптимизации. Это просто из -за правила, в котором говорится, что оптимизация может быть применена только в том случае, если вы строго вернете LVALUE или PRValue? У меня проблемы с пониманием категорий ценностей, я думаю, вернуть a += 1; в конечном итоге станет XValue, что, я думаю, LVALUE, изменяемое во временное RVALUE по выражению.MyObj example()
{
return MyObj(3) + 1;
};
< /code>
is: < /p>
return MyObj(3) + 1;
< /code>
Такая же категория значений, что и: < /p>
return MyObj(3);
Подробнее здесь: https://stackoverflow.com/questions/795 ... -work-here