operator-> zwracana wartość inteligentnych wskaźników [duplikat]

To pytanie ma już tutaj odpowiedź:

-> użycie w inteligentnych wskaźnikach 2 odpowiedzi

inteligentne wskaźniki, takie jak shared_ptr, mogą być używane jak zwykłe wskaźniki* i-> operator. Książki to mówią-> operator zwraca wskaźnik przechowywany przez shared_ptr. Możesz więc użyć go do uzyskania dostępu do obiektu, na który wskazuje ten wskaźnik. Ale jestem tutaj zdezorientowany. Spójrz na poniższy kod.

class A
{
public:
    A(int v = 20){val = v;}
    int val;
}
A* p1 = new A;
std::cout<<p1->val;  //This is common sense

boost::shared_ptr<A> p2(new A);
std::cout<<p2->val;  //This is right
//My question is that p2-> returns the pointers of the object, then maybe another 
//-> should be used?
//like (p2->)->val? 

questionAnswers(3)

yourAnswerToTheQuestion