std::shared_ptr<T>::operator*,std::shared_ptr<T>::operator-> (3) - Linux Manuals

std::shared_ptr<T>::operator*,std::shared_ptr<T>::operator->: std::shared_ptr<T>::operator*,std::shared_ptr<T>::operator->


std::shared_ptr<T>::operator*,std::shared_ptr<T>::operator-> - std::shared_ptr<T>::operator*,std::shared_ptr<T>::operator->


T& operator*() const noexcept; (1) (since C++11)
T* operator->() const noexcept; (2) (since C++11)

Dereferences the stored pointer. The behavior is undefined if the stored pointer is null.



Return value

1) The result of dereferencing the stored pointer, i.e., *get()
2) The stored pointer, i.e., get()


When T is a (possibly cv-qualified) void, it is unspecified whether function (1) is declared.

When T is an array type, it is unspecified whether these member functions are declared, and if they are, what their return type is, except that the declaration (not necessarily the definition) of these functions is well-formed. (since C++17)

If either function is declared despite being unspecified, it is unspecified what its return type is, except that the declaration (although not necessarily the definition) of the function is guaranteed to be legal. This makes it possible to instantiate std::shared_ptr<void>.


// Run this code

  #include <iostream>
  #include <memory>

  struct Foo
     Foo(int in) : a(in) {}
     void print() const
        std::cout << "a = " << a << '\n';
     int a;

  int main()
     auto ptr = std::make_shared<Foo>(10);


  a = 10
  a = 10

See also

    returns the stored pointer
get (public member function)