Identify lvalue and rvalue expressions

Question | Jul 26, 2016 | nextptr 

C++ expressions can be categorized as lvalue or rvalue. Lvalue expressions are named variables or memory locations that can be assigned new values. Rvalue expressions are temporaries or values that cannot be changed.

We define an int array iarr:

int iarr[4] = { 1, 2, 3, 4 };

Identify all the choices below which will fail to compile because of incorrect usage of lvalue and rvalue: