Рассмотрим функцию
const std::string f()
{
return "hello";
}
И звонок
std::string x = f();
Независимо от того, должны ли возвращаемые значения быть константными или нет, мешает ли тот факт, что возвращаемое значение является константой, компилятору выполнить оптимизацию возвращаемого значения?
Мое понимание RVO заключается в том, что возвращаемый объект создается непосредственно в переменной вне функции. Однако, если возвращаемый тип const T
, это не то же самое, что T
, так будет ли предотвращен RVO?
const std::string
. Вопрос не в том, следует ли вам это делать, а в том, что конкретно произойдет, если вы это сделаете. Это связанный вопрос, но не дубликат ИМО. - person   schedule 18.08.2014const
при возврате, необходимо сделать копию, чтобы RVO не происходило (не должно?). Ответы замалчивают это, хотя и не упоминаются явно. Как я уже сказал, это не первый вопрос по теме. Я просто выбрал первый приличный вид. - person Rapptz   schedule 18.08.2014