Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
std::string f()
{
std::string s = "Hi!";
Finalizer fin(s);
return std::move(s);
}std::string f()
{
std::string s = "Hi!";
Finalizer fin(s);
return s;
}
std::string f()
{
std::string s = "Hi!";
Finalizer fin(s);
return std::move(s);
}
почему стандарт позволяет оператору return рассматривать любое выражение как rvalue reference? Ответ очевиден: да потому что после return результат этого выражения никому больше не нужен, даже если выражение является именованным объектом, объект можно смело перемещать.
T f()
{
static T o;
return o;
}
Замечание по move semantics при операторе return в C++11