FreeBSD Manual Pages
std::experi...al::optional(3) C++ Standard Libarystd::experi...al::optional(3) NAME std::experimental::optional::optional - std::experimental::op- tional::optional Synopsis constexpr optional() noexcept; (li- brary fundamentals constexpr optional( std::experimental::nullopt_t ) (1) TS) noexcept; optional( const optional& other ); (2) (li- brary fundamentals TS) optional( optional&& other ) noexcept(/* see below */); (3) (li- brary fundamentals TS) constexpr optional( const T& value ); (4) (li- brary fundamentals TS) constexpr optional( T&& value ); (5) (li- brary fundamentals TS) template< class... Args > (li- brary fundamentals constexpr explicit optional( (6) TS) std::experimental::in_place_t, Args&&... args ); template< class U, class... Args > constexpr explicit optional( (li- brary fundamentals std::experimental::in_place_t, (7) TS) std::initializer_list<U> ilist, Args&&... args ); Constructs a new optional object. 1) Constructs the object that does not contain a value. 2) Copy constructor: If other contains a value, initializes the con- tained value as if direct-initializing (but not direct-list-initializing) an object of type T with the expression *other. If other does not contain a value, constructs an object that does not contain a value. 3) Move constructor: If other contains a value, initializes the con- tained value as if direct-initializing (but not direct-list-initializing) an object of type T with the expression std::move(*other) and does not make other empty: a moved-from optional still contains a value, but the value itself is moved from. If other does not contain a value, constructs an object that does not contain a value. 4) Constructs an optional object that contains a value, initialized as if direct-initializing (but not direct-list-initializing) an object of type T with the expression value. This constructor is constexpr if the constructor of T selected by direct-initialization is constexpr. 5) Constructs an optional object that contains a value, initialized as if direct-initializing (but not direct-list-initializing) an object of type T with the expression std::move(value). This constructor is constexpr if the constructor of T selected by direct-initialization is constexpr. 6) Constructs an optional object that contains a value, initialized as if direct-initializing (but not direct-list-initializing) an object of type T from the arguments std::forward<Args>(args)... 7) Constructs an optional object that contains a value, initialized as if direct-initializing (but not direct-list-initializing) an object of type T from the arguments ilist, std::forward<Args>(args).... The function does not participate in the overload resolution if std::is_constructible<T, std::initial- izer_list<U>&, Args&&...>::value != true Parameters other - another optional object whose contained value to copy value - value to initialize the contained value with args... - arguments to initialize the contained value with ilist - initializer list to initialize the contained value with Type requirements - T must meet the requirements of CopyConstructible in order to use overloads (2,4). - T must meet the requirements of MoveConstructible in order to use overloads (3,5). Exceptions 2) Throws any exception thrown by the constructor of T. 3) Throws any exception thrown by the constructor of T. Has the fol- lowing noexcept declaration: noexcept specification: noexcept(std::is_nothrow_move_constructible<T>::value) . 4-7) Throws any exception thrown by the constructor of T. Example // Run this code #include <experimental/optional> #include <iostream> #include <string> int main() { std::experimental::optional<int> o1, // empty o2 = 1, // init from rvalue o3 = o2; // copy-constructor std::experimental::optional<std::string> o4(std::experimen- tal::in_place, {'a', 'b', 'c'}); std::cout << *o2 << ' ' << *o3 << ' ' << *o4 << '\n'; } Output: 1 1 abc See also make_optional creates an optional object (function template) http://cppreference.com 2022.07.31 std::experi...al::optional(3)
NAME | Synopsis | Parameters | Type requirements | Exceptions | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::optional::optional&sektion=3&manpath=FreeBSD+Ports+15.0>
