Я не понимаю последнюю строку примера на странице 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
как в строке выше?