table of contents
std::unique_ptr::operator*,std::unique_ptr::operator->(3) | C++ Standard Libary | std::unique_ptr::operator*,std::unique_ptr::operator->(3) |
NAME¶
std::unique_ptr::operator*,std::unique_ptr::operator-> - std::unique_ptr::operator*,std::unique_ptr::operator->
Synopsis¶
typename std::add_lvalue_reference<T>::type operator*()
const (since C++11)
noexcept(noexcept(*std::declval<pointer>())); (1) (constexpr
since
C++23)
(since C++11)
pointer operator->() const noexcept; (2) (constexpr since
C++23)
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
operator* might be potentially-throwing a conditional exception
LWG 2762 C++11 even if specification added
*get() was noexcept
See also¶
get returns a pointer to the managed object
(public member function)
2022.07.31 | http://cppreference.com |