Я не понимаю последнюю строку примера на стр. 148 FCD (§7.6.1.2/4):
const int&& foo();
int i;
struct A { double x; };
const A* a = new A();
decltype(foo()) x1 = i; // type is const int&&
decltype(i) x2; // type is int
decltype(a->x) x3; // type is double
decltype((a->x)) x4 = x3; // type is const double&
Почему круглые скобки имеют значение здесь? Разве это не должно быть double
как в строке выше?