Według C++ Primer, operator strzałki C++ daje lwartość. Dodatkowo decltype
wyrażenia, które daje lwartość, da typ odniesienia. Dlaczego więc następujący typ decyzyjny ma wartość , a nie, oznacza typ odwołania.C++ typ strzałki daje lwartość
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
Zobacz http://en.cppreference.com/w/cpp/language/decltype. – Holt