Namespaces
Variants

std::optional

From cppreference.com
Revision as of 10:39, 5 June 2013 by P12 (talk | contribs) (+the rationale for optional)
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
 
Defined in header <optional>
template< class T >
class optional;
(since C++14)

The class template std::optional manages an optional contained value. The value may be in either initialized or uninitialized state during the lifetime of the optional object.

A common use case for optional is the return value of a function that may fail. As opposed to other approaches, such as std::pair<T,bool>, optional handles expensive to construct objects well and is more readable, as the intent is expressed explicitly.

The value is guaranteed to be allocated within the optional object itself, i.e. no dynamic memory allocation ever takes place.

The optional object is in initialized state on the following conditions:

  • The object is initialized with a value of type T
  • The object is assigned an optional in initialized state.

The object is in uninitialized state on the following conditions:

  • The object is default-initialized.
  • The object is initialized with a value of std::nullopt_t or a optional object in uninitialized state.
  • The object is assigned a value of std::nullopt_t or a optional object in uninitialized state.

Template parameters

T - the type of the value to manage initialization state for. The type must meet the requirements of Template:concept

Member types

Member type Definition
value_type T

Member functions

constructs the optional object
(public member function of std::optional<T>) [edit]
destroys the contained value, if there is one
(public member function of std::optional<T>) [edit]
assigns contents
(public member function of std::optional<T>) [edit]
Observers
accesses the contained value
(public member function of std::optional<T>) [edit]
checks whether the object contains a value
(public member function of std::optional<T>) [edit]
returns the contained value
(public member function of std::optional<T>) [edit]
returns the contained value if available, another value otherwise
(public member function of std::optional<T>) [edit]
Modifiers
exchanges the contents
(public member function of std::optional<T>) [edit]
constructs the contained value in-place
(public member function of std::optional<T>) [edit]

Non-member functions

(C++17)(C++17)(C++17)(C++17)(C++17)(C++17)(C++20)
compares optional objects
(function template) [edit]
creates an optional object
(function template) [edit]
specializes the std::swap algorithm
(function template) [edit]

Helper classes

hash support for std::optional
(class template specialization) [edit]