有如下一段代码
void bar(int const & x)#3
{
}
void foo(int const & x)#1
{
bar(x);#2
}
int main()
{
double x = 1.0;
foo(static_cast<int>(x));#0
}
在 #0 处创建了一个纯右值并将其传递给 foo #1。 对象的生命周期被延长。然后它被传递到 bar #2。此时,temporal object 不是扩展了两次? Sanitizer 会报告任何问题。
此时我缺少什么?