То есть выходит либо я передаю умный указатель в выражении foo(bar()) по значению как возвращаемое значение bar(), либо мне надо сделать временную переменную
let tmp=bar() если bar вернет ссылку
и потом передать foo(tmp) что бы переменная жила дольше чем будет вычислятся выражение foo(bar())? Я вероятно запутался и есть какой-то способ foo(bar()) с передачей ссылки вместо умного указателя? Ну есть жеж?
Да, я ожидал, что можно даже вернуть ссылку на значение, созданное внутри функции, а нельзя. Только умные указатели. То есть все же не совсем халява.