Selon l'amorce C++, l'opérateur de flèche C++ donne une valeur lvalue. De plus, decltype
d'une expression qui donne une valeur lvalue donnera un type de référence. Donc, pourquoi le type de declt suivant et non aboutit à un type de référence.Le type de flèche C++ donne lvalue
struct MyStruct {
string name
};
MyStruct s;
s.name = "aname";
MyStruct* p = &s;
decltype (p -> name) str = s.name; //type of str will be string and not &string although p -> name yields an lvalue
Voir http://fr.cppreference.com/w/cpp/language/decltype. – Holt