Скажем, у меня есть следующий код
int main(){
new int; // Is this expression l-value or r-value??
return 0;
}
Я знаю, что lvalues являются постоянным объектом (поскольку он имеет определенное место в памяти, откуда мы можем получить доступ к последнему даже после окончания выражения), а rvalues - временный объект (ему нет места в памяти и испаряется после окончания выражения).
Я видел, где это выражение rvalue. Как это может быть rvalue, если выражение возвращает адрес (определенное место в памяти). Или это значение rvalue, потому что когда-либо выражение new int возвращает (значение адреса), оно исчезает и никогда не может быть поймано после окончания выражения.