Влияет ли возврат по константному значению на оптимизацию возвращаемого значения?

Рассмотрим функцию

const std::string f()
{
    return "hello";
}

И звонок

std::string x = f();

Независимо от того, должны ли возвращаемые значения быть константными или нет, мешает ли тот факт, что возвращаемое значение является константой, компилятору выполнить оптимизацию возвращаемого значения?

Мое понимание RVO заключается в том, что возвращаемый объект создается непосредственно в переменной вне функции. Однако, если возвращаемый тип const T, это не то же самое, что T, так будет ли предотвращен RVO?


person Neil Kirk    schedule 18.08.2014    source источник
comment
Я знаю, что вы сказали «независимо от того, [...] const или нет», ответы на связанный вопрос (и другие) действительно относятся к этому конкретному вопросу в наше время и в старые времена.   -  person Rapptz    schedule 18.08.2014
comment
@Rapptz Я не думаю, что это дубликат. На вопрос, который вы нашли, совершенно правильно ответили, что в настоящее время функция не должна возвращать const std::string. Вопрос не в том, следует ли вам это делать, а в том, что конкретно произойдет, если вы это сделаете. Это связанный вопрос, но не дубликат ИМО.   -  person    schedule 18.08.2014
comment
@hvd Я не верю, что ответы на этот вопрос добавят ничего ценного, поскольку связанный ответ отвечает на окончательное положение дел, то есть запрещает семантику перемещения, а также запрещает RVO, потому что необходимо сделать копию.   -  person Rapptz    schedule 18.08.2014
comment
@Rapptz Вы говорите, что на связанный вопрос есть ответы, в которых говорится, что в этом случае RVO запрещен?   -  person Neil Kirk    schedule 18.08.2014
comment
@NeilKirk, если это так, то это незаметно, так как RVO нигде на странице нет.   -  person WhozCraig    schedule 18.08.2014
comment
@NeilKirk Это подразумевается, потому что вы не можете отбросить const при возврате, необходимо сделать копию, чтобы RVO не происходило (не должно?). Ответы замалчивают это, хотя и не упоминаются явно. Как я уже сказал, это не первый вопрос по теме. Я просто выбрал первый приличный вид.   -  person Rapptz    schedule 18.08.2014
comment
Причина, по которой я спрашиваю, заключается в том, что у меня есть устаревший код, который делает это, и в прошлом этот код показывал узкие места в производительности. Я хочу знать, стоит ли бюрократия менять код или оставить как есть.   -  person Neil Kirk    schedule 18.08.2014
comment
@Rapptz Другими словами, связанные вопросы не отвечают на мой вопрос.   -  person Neil Kirk    schedule 18.08.2014
comment
@Rapptz Хорошо, спасибо, последние два отвечают на мой вопрос.   -  person Neil Kirk    schedule 18.08.2014
comment
@NeilKirk Основываясь на вашем последнем комментарии, я проголосовал за закрытие как дубликат stackoverflow.com/questions/14429988/. Это кажется действительно идеальным дубликатом.   -  person jogojapan    schedule 18.08.2014
comment
@NeilKirk И наблюдение говорит, что это действительно дубликат.. Казалось бы, держится точно.   -  person WhozCraig    schedule 18.08.2014
comment
@NeilKirk Да, без проблем. Извините за неправильное голосование за обман.   -  person Rapptz    schedule 18.08.2014
comment
@Rapptz Нет проблем, приятель.   -  person Neil Kirk    schedule 18.08.2014