Как получить адрес возвращенной ссылки rvalue? - PullRequest
0 голосов
/ 31 марта 2020
#include <iostream>
int&& func() {return 7;}
int main() {
  std::cout << &func();
} 

Выдает ошибку, даже с return std::move(7). Он говорит, что fun c () - это значение (как будто я делаю & 7).

1 Ответ

0 голосов
/ 31 марта 2020

Это говорит, что веселье c () - это значение

Ну, это - значение.

(как если я делаю & 7).

Это равно , как будто вы делаете &7, по крайней мере в том смысле, что вы не можете использовать & на значение.

В действительности вы пытаетесь использовать в качестве lvalue висячую ссылку на временную int (инициализированную из литерала).

Этот код не имеет смысла. Я не знаю, что вы пытаетесь сделать, но вы не можете этого сделать.

...