Может ли кто-нибудь объяснить детали в терминах rvalues, lvalues, POD и non-POD, почему первое выражение, помеченное ниже, не ok, в то время как второе выражение, помеченное ниже, в порядке? В моем понимании, как int(), так и A() должны быть rvalues, нет?
struct A {};
int main()
{
int i;
A a;
int() = i; //Not OK (error).
A() = a; //OK.
return 0;
}