Предположим, у меня есть простой класс с сеттером:
Код: Выделить всё
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