[#beman-optional-optional-03-2constructor-026] = xref:beman.adoc[beman]::xref:beman/optional.adoc[optional]::xref:beman/optional/optional-03.adoc[optional]::optional :relfileprefix: ../../../ :mrdocs: Constructors == Synopses Declared in `<beman/optional/optional.hpp>` Default constructs an empty optional. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03/2constructor-066.adoc[optional]() noexcept; ---- [.small]#xref:beman/optional/optional-03/2constructor-066.adoc[_» more..._]# Copy constructs the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03/2constructor-06c.adoc[optional](xref:beman/optional/optional-03.adoc[optional] const& other) requires std::is_copy_constructible_v<T> && std::is_trivially_copy_constructible_v<T> = default; ---- [.small]#xref:beman/optional/optional-03/2constructor-06c.adoc[_» more..._]# Copy constructs the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03/2constructor-0c.adoc[optional](xref:beman/optional/optional-03.adoc[optional] const& rhs) requires std::is_copy_constructible_v<T> && (!std::is_trivially_copy_constructible_v<T>); ---- [.small]#xref:beman/optional/optional-03/2constructor-0c.adoc[_» more..._]# Constructs the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class U> constexpr explicit(!std::is_convertible_v<U, T>) xref:beman/optional/optional-03/2constructor-04a.adoc[optional](xref:beman/optional/optional-03.adoc[optional<U>] const& rhs) requires (detail::enable_from_other<T, U, const U&>); ---- [.small]#xref:beman/optional/optional-03/2constructor-04a.adoc[_» more..._]# Move constructs the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03/2constructor-05.adoc[optional](xref:beman/optional/optional-03.adoc[optional]&& other) requires std::is_move_constructible_v<T> && std::is_trivially_move_constructible_v<T> = default; ---- [.small]#xref:beman/optional/optional-03/2constructor-05.adoc[_» more..._]# Move constructs the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03/2constructor-0b.adoc[optional](xref:beman/optional/optional-03.adoc[optional]&& rhs) noexcept(std::is_nothrow_move_constructible_v<T>) requires std::is_move_constructible_v<T> && (!std::is_trivially_move_constructible_v<T>); ---- [.small]#xref:beman/optional/optional-03/2constructor-0b.adoc[_» more..._]# Constructs the value from `rhs` if it has one. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class U> constexpr explicit(!std::is_convertible_v<U, T>) xref:beman/optional/optional-03/2constructor-06e.adoc[optional](xref:beman/optional/optional-03.adoc[optional<U>]&& rhs) requires (detail::enable_from_other<T, U, U &&>); ---- [.small]#xref:beman/optional/optional-03/2constructor-06e.adoc[_» more..._]# Constructs an empty optional. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- constexpr xref:beman/optional/optional-03/2constructor-043.adoc[optional](xref:beman/optional/nullopt_t.adoc[nullopt_t] value) noexcept; ---- [.small]#xref:beman/optional/optional-03/2constructor-043.adoc[_» more..._]# Constructs the value from `u,` forwarding it if necessary. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class U = T> constexpr explicit(!std::is_convertible_v<U, T>) xref:beman/optional/optional-03/2constructor-00.adoc[optional](U&& u) requires detail::enable_forward_value<T, U>; ---- [.small]#xref:beman/optional/optional-03/2constructor-00.adoc[_» more..._]# Constructs the value in‐place using the given arguments. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class... Args> constexpr explicit xref:beman/optional/optional-03/2constructor-02a.adoc[optional]( xref:beman/optional/in_place_t.adoc[in_place_t], Args...&&... args) requires std::is_constructible_v<T, Args...>; ---- [.small]#xref:beman/optional/optional-03/2constructor-02a.adoc[_» more..._]# Constructs the value in‐place using the given arguments. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class U, class... Args> constexpr explicit xref:beman/optional/optional-03/2constructor-07.adoc[optional]( xref:beman/optional/in_place_t.adoc[in_place_t], std::initializer_list<U> il, Args...&&... args) requires std::is_constructible_v<T, std::initializer_list<U>&, Args&&...>; ---- [.small]#xref:beman/optional/optional-03/2constructor-07.adoc[_» more..._]# [.small]#Created with https://www.mrdocs.com[MrDocs]#