Почему моя лямбда возвращает ссылку через мусор STD :: Function Print?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему моя лямбда возвращает ссылку через мусор STD :: Function Print?

Сообщение Anonymous »

У меня есть следующая простая программа C ++ 20: < /p>
#include
#include
#include
#include

struct C {
std::pair str = {0, "hello"};

const std::pair& get() { return str; }
};

int main() {
C c;
std::function fun =
[&]() { return c.get(); };

std::cout
(@g
< /code>
Я использую Clang ++ 16.0. < /p>
  • Если лямбда возвращается по значению, почему компилятор разрешает его связывать с этим STD :: Function < /code>, которая возвращается с помощью ссылки? Возвращение ссылки на ссылку должно быть действительным.


Подробнее здесь: https://stackoverflow.com/questions/797 ... nt-garbage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»