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