Это означает, что объект черты, который живет где-то в куче, будет существовать в течение жизни 'a
.
Не совсем.
'a
здесь точно не указывает, он только устанавливает верхнюю границу времени жизни объекта. Находится ли объект в куче или в стеке, не имеет значения: компилятор должен убедиться, что время жизни этого объекта не превышает 'a
.
Время жизни представляет отношение между рефералом и референтом и используется для обеспечения того, чтобы референт никогда не пережил упомянутого. Таким образом, он устанавливает верхнюю границу времени жизни референта и нижнюю границу времени жизни реферата.
Компилятор может получить необходимое время жизни из фактического конкретного типа, возвращаемого функцией, однако для этого потребуется, чтобы средство проверки типов могло просматривать реализацию функции для выполнения своей работы.
Документирование ограничения времени жизни на границе интерфейса, таким образом, является более дружественным как для людей, так и для компилятора: оно допускает локальные рассуждения.