生命周期延长从函数返回引用

lifetime extension returning reference from function

以下是UB(未定义行为)吗? value 现在真的是悬而未决的一级 "too much" 并且 compiler/language 规则没有延长生命周期吗?

const int &get_value(const int &value) { return value; };
int main()
{
    const auto &value = get_value(5);
    printf("Value is: %d", value);
}

是的,这是UB。当通过 5 传递给 get_value() 时,会创建一个临时对象并将函数参数 const 引用 value 绑定到它。因为,绑定到函数参数 value 的临时对象,它将持续存在,直到包含调用的完整表达式完成。在 main() 中,您正在取消引用未绑定到活动对象的引用,这是未定义的行为。