возврат параметра rvalue в качестве ссылки rvalue - PullRequest
0 голосов
/ 28 ноября 2018

В этом потоке ( Должен ли я вернуть параметр ссылки rvalue по ссылке rvalue? ), записано, что The parameter cannot be a temporary (which is just what rvalue references represent).Если я хорошо понимаю это предложение, этот код не должен быть правильным

#include <string>
#include <iostream>
std::string &&f(std::string &&a) {
    return std::move(a);   
}

int main() {
    std::string a = f("lol");
    std::cout << a << std::endl;
    return 0;
}

Однако, когда мы смотрим на std::get, кажется, что он возвращает ссылку на rvalue для временного кортежа, и я на самом деле думаю, что естьнет проблем с использованием std::get с временным кортежем.

Итак, я думаю, что я неправильно понял предложение выше, и предыдущий код верен.Однако это не правильно:

#include <string>
#include <iostream>
std::string &&f(std::string &&a) {
    return std::move(a);   
}

int main() {
    std::string &&a = f("lol");
    std::cout << a << std::endl;
    return 0;
}

Было бы правильно, если бы функция возвращала значение, а не ссылку на значение.Я прав?

...