Почему вы можете вернуть функция по ссылке для локальной переменной, а не для временной переменной? c++

например, эта функция 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.

5
задан atoMerz 6 March 2012 в 15:57
поделиться