std::unique_ptr<T,Deleter>::operator*, std::unique_ptr<T,Deleter>::operator->
From cppreference.com
                    
                                        
                    < cpp | memory | unique ptr
                    
                                                            
                    | typename std::add_lvalue_reference<T>::type operator*() const noexcept(noexcept(*std::declval<pointer>())); | (1) | (since C++11) | 
| pointer operator->() const noexcept; | (2) | (since C++11) | 
operator* and operator-> provide access to the object owned by *this.
The behavior is undefined if get() == nullptr.
These member functions are only provided for unique_ptr for the single objects i.e. the primary template.
Parameters
(none)
Return value
1) Returns the object owned by *this, equivalent to *get().
2) Returns a pointer to the object owned by *this, i.e. get().
Exceptions
1) May throw if 
pointer has a throwing operator*.Example
Run this code
#include <iostream> #include <memory> struct Foo { void bar() { std::cout << "Foo::bar\n"; } }; void f(const Foo&) { std::cout << "f(const Foo&)\n"; } int main() { std::unique_ptr<Foo> ptr(new Foo); ptr->bar(); f(*ptr); }
Output:
Foo::bar f(const Foo&)
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 2762 | C++11 | operator*might be potentially-throwing even if *get() was noexcept | a conditional exception specification added | 
See also
| returns a pointer to the managed object (public member function) |