Я не спрашиваю decltype((x))
, я знаю, как это работает.
Согласно проекту N4687, § 10.1.7.2
4 For an expression e, the type denoted by decltype(e) is defined as follows:
...
(4.2) — otherwise, if e is an unparenthesized id-expression or an unparenthesized class
member access (8.2.5), decltype(e) is the type of the entity named by e. If
there is no such entity, or if e names a set of overloaded functions, the
program is ill-formed;
...
И пример
struct A { double x; };
const A* a = new A();
decltype(a->x) x3; // type is double
Мой вопрос, a->x
const double
, но почему x3 является double
? где идет const
?
BTW, что означает decltype(e) is the type of the entity named by e
точно?