Рассмотрим это:
std::string foo();
void bar() {
const std::string& r1 = foo();
static const std::string& r2 = foo();
}
Я знаю, что время жизни строки, полученной в результате первого вызова foo()
, будет распространено на время жизни r1
.
Как насчет временной привязки к r2
, хотя? Будет ли он жить до конца области или будет ли он оставаться там, когда bar()
будет повторно введен?
Примечание. Меня не интересует, делает ли этот конкретный компилятор. (Меня интересует тот, который мы используем, и я могу легко с этим справиться.) Я хочу знать, что стандарт должен сказать об этом.