[#bsl-optional-072-or_else-09] = xref:bsl.adoc[bsl]::xref:bsl/optional-072.adoc[optional]::or_else :relfileprefix: ../../ :mrdocs: `or_else` overloads == Synopses Declared in `<bslstl_optional.h>` If this object does not contain a value, invoke the specified `func` and return the result of that invocation. Otherwise return a copy‐constructed value from this object. Note that `func` must return `bsl::optional`. Also note that the optional object returned by `func` is returned as‐is, without copying or moving. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_FUNC> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>] xref:bsl/optional-072/or_else-0b.adoc[or_else](t_FUNC&& func) const & requires conjunction_v<std::is_invocable<t_FUNC>, std::is_copy_constructible<t_TYPE>>; ---- [.small]#xref:bsl/optional-072/or_else-0b.adoc[_» more..._]# If this object does not contain a value, invoke the specified `func` and return the result of that invocation; otherwise, return a move‐constructed value from this object, leaving this object in an unspecified but valid state. Note that `func` must return `bsl::optional`. Also note that the optional object returned by `func` is returned as‐is, without copying or moving. [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class t_FUNC> constexpr xref:bsl/optional-072.adoc[optional<t_TYPE>] xref:bsl/optional-072/or_else-03.adoc[or_else](t_FUNC&& func) && requires conjunction_v<std::is_invocable<t_FUNC>, std::is_move_constructible<t_TYPE>>; ---- [.small]#xref:bsl/optional-072/or_else-03.adoc[_» more..._]# [.small]#Created with https://www.mrdocs.com[MrDocs]#