Code: Select all
std::string GetName(int);
const std::string& Name1 = GetName(1);
// use Name1
В исходниках Far2L немало подобных мест, но вроде не падает.
(Ответы на любом языке приветствуются
Code: Select all
std::string GetName(int);
const std::string& Name1 = GetName(1);
// use Name1
Да, в данном примере всё в порядке. Дело в том, что ссылка константная, и поэтому время жизни временного объекта, возвращённого функцией, продлевается, чтобы оно было не меньше, чем у самой ссылки.
Да, разумеется. Но не только на стандарт, но и на многолетнее применение именно такой идиомы (константная ссылка на возвращаемое значение). Это одна из практически важных частностей в C++, каких в нём очень много.