Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
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