например, эта функция f определена следующим образом:
int f(int x){return x;}
как вы знаете, вы не можете назначить ссылку на этот временный интервал:
int& rf=f(2);// this will give an error
но если я переопределил свою функцию f следующим образом:
int& f(int x){return x;}
f(2);// so now f(2) is a reference of x, which has been destroyed
поэтому мой вопрос: как компилятор может не позволить вам создать ссылку на временную, которая будет уничтожена после утверждения (в 1-м случае). а с другой стороны, он позволяет создать ссылку f(2) на x
, в то время как компилятор знает, что эта ссылка будет уничтожена после return
.