<beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, U> && !(std::is_same_v<std::remove_cvref_t<U>, in_place_t>) &&
!(std::is_same_v<std::remove_cvref_t<U>, optional>) &&
!detail::reference_constructs_from_temporary_v<T&, U>)
constexpr
explicit(!std::is_convertible_v<U, T &>)
optional(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);
Constructs the stored value from u
if it is convertible to T&
. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Name | Description |
---|---|
U |
Name | Description |
---|---|
u |