Может ли компилятор неявно использовать std::move аргументы при однократном обращении?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Может ли компилятор неявно использовать std::move аргументы при однократном обращении?

Сообщение Anonymous »

Предположим, у меня есть простой класс с сеттером:

Код: Выделить всё

class MyClass
{
public:
void setName(std::string name)
{
_name = std::move(name);
}

private:
std::string _name;
};
Я использую здесь std::move, но если бы я пропустил это и просто написал _name = name, мог бы компилятор неявно переместить аргумент name, поскольку он больше нигде не используется в установщике? Его практически можно рассматривать как rvalue в выражении присваивания, поскольку на него больше нигде не ссылаются по имени.

Могут ли компиляторы сделать это? Делают ли это существующие компиляторы?

Подробнее здесь: https://stackoverflow.com/questions/204 ... -just-once
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»