Namespaces
Name |
beman::optional namespace
Types
Name |
Description |
Exception thrown when trying to access the value of an empty optional |
|
Tag type for in place construction |
|
Tag type for nullopt construction |
|
Functions
Name |
Description |
Equality operators |
|
Inequality operators |
|
Less‐than operators |
|
Less‐than‐or‐equal operators |
|
Greater‐than operators |
|
Greater‐than‐or‐equal operators |
|
Three‐way comparison operators |
Variables
Name |
Description |
Tag to disengage optional objects. |
Concepts
Name |
Namespaces
Name |
Types
Name |
Description |
Exception thrown when trying to access the value of an empty optional |
|
Tag type for in place construction |
|
Tag type for nullopt construction |
|
Functions
Name |
Description |
Equality operators |
|
Inequality operators |
|
Less‐than operators |
|
Less‐than‐or‐equal operators |
|
Greater‐than operators |
|
Greater‐than‐or‐equal operators |
|
Three‐way comparison operators |
Variables
Name |
Description |
Tag to disengage optional objects. |
Concepts
Name |
Exception thrown when trying to access the value of an empty optional
Synopsis
Declared in <beman/optional/optional.hpp>
class bad_optional_access
: public std::exception
Base Classes
Name |
Description |
|
Member Functions
Name |
Description |
|
Construct a new bad optional access object |
|
Get the error message for bad optional access |
Construct a new bad optional access object
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
bad_optional_access() = default;
Synopsis
Declared in <__exception/exception.h>
[[__visibility__, __exclude_from_explicit_instantiation__, __abi_tag__]]
constexpr
exception&
operator=(exception const& value) noexcept = default;
Get the error message for bad optional access
Synopsis
Declared in <beman/optional/optional.hpp>
virtual
char const*
what() const noexcept;
Return Value
const char*
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
struct hash;
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
struct hash<optional<T>>;
Tag type for in place construction
Synopsis
Declared in <beman/optional/optional.hpp>
struct in_place_t;
Member Functions
Name |
Description |
|
Default constructor |
Default constructor
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
explicit
in_place_t() = default;
Tag type for nullopt construction
Synopsis
Declared in <beman/optional/optional.hpp>
struct nullopt_t;
Enums
Name |
Description |
Tag type for nullopt_t construction |
Member Functions
Name |
Description |
|
Construct a new nullopt_t object |
Tag type for nullopt_t construction
Synopsis
Declared in <beman/optional/optional.hpp>
enum class Tag : int;
Members
Name |
Description |
|
Construct a new nullopt_t object
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
explicit
nullopt_t(Tag value) noexcept;
Description
constexpr for nullopt_t to be literal.
Parameters
Name |
Description |
value |
The object to construct from |
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
class optional;
Types
Name |
Description |
Type alias for the const iterator type of the optional. |
|
Type alias for the iterator type of the optional. |
|
Type alias for the value type stored in the optional. |
Member Functions
Name |
Description |
|
Constructors |
|
Destructors |
Assignment operators |
|
Returns an optional containing the result of applying |
|
|
|
|
|
|
|
Returns whether or not the optional has a value. |
|
Returns a reference to the stored value. |
|
Returns a pointer to the stored value. |
|
Returns an optional containing the stored value if it has one, or the result of applying |
|
Resets the optional to an empty state, destroying the stored value if there is one. |
|
Swaps this optional with the other. |
|
Returns an optional containing the result of applying |
|
Returns a reference to the stored value. |
|
Returns a reference to the stored value. |
|
Converts the optional to a boolean indicating whether it has a value. |
Data Members
Name |
Description |
|
The empty state of the optional. |
|
The stored value of the optional. |
Friends
Name |
Description |
Template Parameters
Name |
Description |
T |
Type alias for the const iterator type of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
using const_iterator = /* implementation-defined */::contiguous_iterator<T const, optional>;
Description
Since P3168R2: Give std::optional Range Support.
Type alias for the iterator type of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
using iterator = /* implementation-defined */::contiguous_iterator<T, optional>;
Description
Since P3168R2: Give std::optional Range Support.
Type alias for the value type stored in the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
using value_type = T;
Constructors
Synopses
Declared in <beman/optional/optional.hpp>
Default constructs an empty optional.
constexpr
optional() noexcept;
Copy constructs the value from rhs
if it has one.
Copy constructs the value from rhs
if it has one.
Constructs the value from rhs
if it has one.
template<class U>
constexpr
explicit(!std::is_convertible_v<U, T>)
optional(optional<U> const& rhs)
requires (detail::enable_from_other<T, U, const U&>);
Move constructs the value from rhs
if it has one.
Move constructs the value from rhs
if it has one.
Constructs the value from rhs
if it has one.
template<class U>
constexpr
explicit(!std::is_convertible_v<U, T>)
optional(optional<U>&& rhs)
requires (detail::enable_from_other<T, U, U &&>);
Constructs an empty optional.
constexpr
optional(nullopt_t value) noexcept;
Constructs the value from u,
forwarding it if necessary.
template<class U = T>
constexpr
explicit(!std::is_convertible_v<U, T>)
optional(U&& u)
requires detail::enable_forward_value<T, U>;
Constructs the value in‐place using the given arguments.
template<class... Args>
constexpr
explicit
optional(
in_place_t,
Args...&&... args)
requires std::is_constructible_v<T, Args...>;
Constructs the value in‐place using the given arguments.
template<
class U,
class... Args>
constexpr
explicit
optional(
in_place_t,
std::initializer_list<U> il,
Args...&&... args)
requires std::is_constructible_v<T, std::initializer_list<U>&, Args&&...>;
Template Parameters
Name |
Description |
U |
Default constructs an empty optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional() noexcept;
Copy constructs the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(optional const& other)
requires std::is_copy_constructible_v<T> && std::is_trivially_copy_constructible_v<T> = default;
Description
Defaulted if T is trivially copy constructible.
Parameters
Name |
Description |
other |
The object to copy construct from |
Copy constructs the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(optional const& rhs)
requires std::is_copy_constructible_v<T> && (!std::is_trivially_copy_constructible_v<T>);
Parameters
Name |
Description |
rhs |
The object to copy construct from |
Constructs the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
constexpr
explicit(!std::is_convertible_v<U, T>)
optional(optional<U> const& rhs)
requires (detail::enable_from_other<T, U, const U&>);
Description
Converting copy constructor.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
The object to copy construct from |
Move constructs the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(optional&& other)
requires std::is_move_constructible_v<T> && std::is_trivially_move_constructible_v<T> = default;
Description
Defaulted if T is trivially move constructible.
Parameters
Name |
Description |
other |
The object to move construct from |
Move constructs the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(optional&& rhs) noexcept(std::is_nothrow_move_constructible_v<T>)
requires std::is_move_constructible_v<T> && (!std::is_trivially_move_constructible_v<T>);
Parameters
Name |
Description |
rhs |
The object to move construct from |
Constructs the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
constexpr
explicit(!std::is_convertible_v<U, T>)
optional(optional<U>&& rhs)
requires (detail::enable_from_other<T, U, U &&>);
Description
Converting move constructor.
Parameters
Name |
Description |
rhs |
The object to move construct from |
Constructs an empty optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(nullopt_t value) noexcept;
Parameters
Name |
Description |
value |
The object to construct from |
Constructs the value from u,
forwarding it if necessary.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U = T>
constexpr
explicit(!std::is_convertible_v<U, T>)
optional(U&& u)
requires detail::enable_forward_value<T, U>;
Description
If u
is convertible to T,
this is an explicit constructor.
Constructs the stored value with u
.
Parameters
Name |
Description |
u |
The object to move construct from |
Constructs the value in‐place using the given arguments.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class... Args>
constexpr
explicit
optional(
in_place_t,
Args...&&... args)
requires std::is_constructible_v<T, Args...>;
Description
Constructs the stored value in‐place using the given arguments.
Constructs the value in‐place using the given arguments.
Synopsis
Declared in <beman/optional/optional.hpp>
template<
class U,
class... Args>
constexpr
explicit
optional(
in_place_t,
std::initializer_list<U> il,
Args...&&... args)
requires std::is_constructible_v<T, std::initializer_list<U>&, Args&&...>;
Destructors
Synopses
Declared in <beman/optional/optional.hpp>
Destructs the optional.
constexpr
~optional()
requires std::is_trivially_destructible_v<T> = default;
Destroys the optional and its value if it has one.
constexpr
~optional()
requires (!std::is_trivially_destructible_v<T>);
Destructs the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
~optional()
requires std::is_trivially_destructible_v<T> = default;
Destroys the optional and its value if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
~optional()
requires (!std::is_trivially_destructible_v<T>);
Assignment operators
Synopses
Declared in <beman/optional/optional.hpp>
Copy assigns the value from rhs
if it has one.
constexpr
optional&
operator=(optional const& other)
requires std::is_copy_constructible_v<T> && std::is_copy_assignable_v<T> &&
std::is_trivially_copy_constructible_v<T> && std::is_trivially_copy_assignable_v<T> = default;
Copy assigns the value from rhs
if it has one.
constexpr
optional<T>&
operator=(optional const& rhs)
requires std::is_copy_constructible_v<T> && std::is_copy_assignable_v<T> &&
(!std::is_trivially_copy_assignable_v<T>);
Assigns the stored value from rhs
if it has one, destroying the old value if there
template<class U>
constexpr
optional<T>&
operator=(optional<U> const& rhs)
requires (detail::enable_assign_from_other<T, U, const U&>);
Move assigns the value from rhs
if it has one.
constexpr
optional&
operator=(optional&& other)
requires std::is_move_constructible_v<T> && std::is_move_assignable_v<T> &&
std::is_trivially_move_constructible_v<T> && std::is_trivially_move_assignable_v<T> = default;
Move assigns the value from rhs
if it has one.
constexpr
optional<T>&
operator=(optional&& rhs) noexcept(std::is_nothrow_move_constructible_v<T>)
requires std::is_move_constructible_v<T> && std::is_move_assignable_v<T> &&
(!std::is_trivially_move_assignable_v<T>);
Assigns the stored value from rhs
if it has one, destroying the old value if there
template<class U>
constexpr
optional<T>&
operator=(optional<U>&& rhs)
requires (detail::enable_assign_from_other<T, U, U>);
Resets the optional to an empty state.
constexpr
optional<T>&
operator=(nullopt_t value) noexcept;
Assigns the stored value from u,
destroying the old value if there
template<class U = T>
constexpr
optional<T>&
operator=(U&& u)
requires detail::enable_assign_forward<T, U>;
Return Value
optional&
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Copy assigns the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional&
operator=(optional const& other)
requires std::is_copy_constructible_v<T> && std::is_copy_assignable_v<T> &&
std::is_trivially_copy_constructible_v<T> && std::is_trivially_copy_assignable_v<T> = default;
Return Value
optional&
Parameters
Name |
Description |
other |
The object to copy assign from |
Copy assigns the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>&
operator=(optional const& rhs)
requires std::is_copy_constructible_v<T> && std::is_copy_assignable_v<T> &&
(!std::is_trivially_copy_assignable_v<T>);
Return Value
Reference to the current object
Parameters
Name |
Description |
rhs |
The object to copy assign from |
Assigns the stored value from rhs
if it has one, destroying the old value if there
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
constexpr
optional<T>&
operator=(optional<U> const& rhs)
requires (detail::enable_assign_from_other<T, U, const U&>);
Description
Converting copy assignment operator.
Copies the value from rhs
if there is one. Otherwise resets the stored value in *this
.
Return Value
Reference to the current object
Parameters
Name |
Description |
rhs |
The object to copy assign from |
Move assigns the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional&
operator=(optional&& other)
requires std::is_move_constructible_v<T> && std::is_move_assignable_v<T> &&
std::is_trivially_move_constructible_v<T> && std::is_trivially_move_assignable_v<T> = default;
Return Value
Reference to the current object
Parameters
Name |
Description |
other |
The object to move assign from |
Move assigns the value from rhs
if it has one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>&
operator=(optional&& rhs) noexcept(std::is_nothrow_move_constructible_v<T>)
requires std::is_move_constructible_v<T> && std::is_move_assignable_v<T> &&
(!std::is_trivially_move_assignable_v<T>);
Return Value
Reference to the current object
Parameters
Name |
Description |
rhs |
The object to move assign from |
Assigns the stored value from rhs
if it has one, destroying the old value if there
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
constexpr
optional<T>&
operator=(optional<U>&& rhs)
requires (detail::enable_assign_from_other<T, U, U>);
Description
Converting move assignment operator.
Moves the value from rhs
if there is one. Otherwise resets the stored value in *this
.
Return Value
Reference to the current object
Parameters
Name |
Description |
rhs |
The object to move assign from |
Resets the optional to an empty state.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>&
operator=(nullopt_t value) noexcept;
Return Value
Reference to the current object
Parameters
Name |
Description |
value |
The object to assign from |
Assigns the stored value from u,
destroying the old value if there
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U = T>
constexpr
optional<T>&
operator=(U&& u)
requires detail::enable_assign_forward<T, U>;
Description
Assigns the stored value from u
, destroying the old value if there was one.
Return Value
optional&
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Returns an optional containing the result of applying f
to the stored value.
Synopses
Declared in <beman/optional/optional.hpp>
Returns an optional containing the result of applying f
to the stored value.
template<class F>
constexpr
auto
and_then(F&& f) const &&;
Returns an optional containing the result of applying f
to the stored value.
template<class F>
constexpr
auto
and_then(F&& f) const &;
Returns an optional containing the result of applying f
to the stored value.
template<class F>
constexpr
auto
and_then(F&& f) &&;
Returns an optional containing the result of applying f
to the stored value.
template<class F>
constexpr
auto
and_then(F&& f) &;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
and_then(F&& f) const &&;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
and_then(F&& f) const &;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
and_then(F&& f) &&;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
and_then(F&& f) &;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
begin
overloads
Synopses
Declared in <beman/optional/optional.hpp>
Returns an iterator to the beginning of the optional.
constexpr
optional<T>::iterator
begin() noexcept;
Returns a const iterator to the beginning of the optional.
constexpr
optional<T>::const_iterator
begin() const noexcept;
Return Value
const_iterator
Returns an iterator to the beginning of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>::iterator
begin() noexcept;
Return Value
an iterator to the beginning of the optional.
Returns a const iterator to the beginning of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>::const_iterator
begin() const noexcept;
Return Value
const_iterator
emplace
overloads
Synopses
Declared in <beman/optional/optional.hpp>
Constructs the value in‐place, destroying the current one if there
template<class... Args>
constexpr
T&
emplace(Args...&&... args);
Constructs the value in‐place using the given arguments, destroying the current one if there
template<
class U,
class... Args>
constexpr
T&
emplace(
std::initializer_list<U> il,
Args...&&... args);
Return Value
T&
Template Parameters
Name |
Description |
Args |
|
U |
Parameters
Name |
Description |
args |
|
il |
Constructs the value in‐place, destroying the current one if there
Synopsis
Declared in <beman/optional/optional.hpp>
template<class... Args>
constexpr
T&
emplace(Args...&&... args);
Description
Constructs the value in‐place, destroying the current one if there is one.
Return Value
T&
Template Parameters
Name |
Description |
Args |
Parameters
Name |
Description |
args |
Constructs the value in‐place using the given arguments, destroying the current one if there
Synopsis
Declared in <beman/optional/optional.hpp>
template<
class U,
class... Args>
constexpr
T&
emplace(
std::initializer_list<U> il,
Args...&&... args);
Return Value
T&
Template Parameters
Name |
Description |
U |
|
Args |
Parameters
Name |
Description |
il |
|
args |
end
overloads
Synopses
Declared in <beman/optional/optional.hpp>
Returns an iterator to the end of the optional.
constexpr
optional<T>::iterator
end() noexcept;
Returns a const iterator to the end of the optional.
constexpr
optional<T>::const_iterator
end() const noexcept;
Return Value
const_iterator
Returns an iterator to the end of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>::iterator
end() noexcept;
Return Value
an iterator to the end of the optional.
Returns a const iterator to the end of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T>::const_iterator
end() const noexcept;
Return Value
const_iterator
Returns whether or not the optional has a value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
bool
has_value() const noexcept;
Description
Returns whether or not the optional has a value
Return Value
bool
Returns a reference to the stored value.
Synopses
Declared in <beman/optional/optional.hpp>
Returns a reference to the stored value.
constexpr
T&
operator*() &;
Returns a reference to the stored value.
constexpr
T const&
operator*() const &;
Returns a reference to the stored value.
constexpr
T&&
operator*() &&;
Return Value
-
T&
-
const T&
-
T&&
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T&
operator*() &;
Description
Returns the stored value
Return Value
T&
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T const&
operator*() const &;
Return Value
const T&
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T&&
operator*() &&;
Return Value
T&&
Returns a pointer to the stored value.
Synopses
Declared in <beman/optional/optional.hpp>
Returns a pointer to the stored value.
constexpr
T const*
operator‐>() const;
Returns a pointer to the stored value.
constexpr
T*
operator‐>();
Return Value
T*
Returns a pointer to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T const*
operator‐>() const;
Description
Returns a pointer to the stored value
Return Value
a pointer to the stored value.
Returns a pointer to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T*
operator‐>();
Return Value
T*
Returns an optional containing the stored value if it has one, or the result of applying f
to the optional if it does not.
Synopses
Declared in <beman/optional/optional.hpp>
Returns an optional containing the stored value if it has one, or the result of applying f
to the optional if it does not.
template<class F>
constexpr
optional<T>
or_else(F&& f) &&;
Returns an optional containing the stored value if it has one, or the result of applying f
to the optional if it does not.
template<class F>
constexpr
optional<T>
or_else(F&& f) const &;
Return Value
-
auto
-
optional<T>
-
optional
Template Parameters
Name |
Description |
F |
|
T |
Parameters
Name |
Description |
f |
Returns an optional containing the stored value if it has one, or the result of applying f
to the optional if it does not.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
optional<T>
or_else(F&& f) &&;
Return Value
-
auto
-
optional<T>
Template Parameters
Name |
Description |
F |
|
T |
Parameters
Name |
Description |
f |
Returns an optional containing the stored value if it has one, or the result of applying f
to the optional if it does not.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
optional<T>
or_else(F&& f) const &;
Return Value
-
optional
-
optional<T>
Template Parameters
Name |
Description |
F |
|
T |
Parameters
Name |
Description |
f |
Resets the optional to an empty state, destroying the stored value if there is one.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
void
reset() noexcept;
Swaps this optional with the other.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
void
swap(optional& rhs) noexcept(std::is_nothrow_move_constructible<T>::value && std::is_nothrow_swappable<T>::value);
Description
Swaps this optional with the other.
If neither optionals have a value, nothing happens. If both have a value, the values are swapped. If one has a value, it is moved to the other and the movee is left valueless.
Parameters
Name |
Description |
rhs |
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
Synopses
Declared in <beman/optional/optional.hpp>
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
template<class F>
constexpr
auto
transform(F&& f) const &&;
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
template<class F>
constexpr
auto
transform(F&& f) const &;
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
template<class F>
constexpr
auto
transform(F&& f) &&;
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
template<class F>
constexpr
auto
transform(F&& f) &;
Return Value
-
auto
-
optional
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
transform(F&& f) const &&;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
transform(F&& f) const &;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
transform(F&& f) &&;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an optional containing the result of applying f
to the stored value, or a default value if there is no stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
transform(F&& f) &;
Description
Carries out some operation on the stored object if there is one.
Return Value
optional
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns a reference to the stored value.
Synopses
Return Value
-
T&
-
const T&
-
T&&
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T&
value() &;
Description
Returns the contained value if there is one, otherwise throws bad_optional_access
Return Value
T&
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T const&
value() const &;
Return Value
const T&
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T&&
value() &&;
Return Value
T&&
Returns a reference to the stored value.
Synopses
Declared in <beman/optional/optional.hpp>
Returns a reference to the stored value.
template<class U = std::remove_cv_t<T>>
constexpr
T
value_or(U&& u) const &;
Returns a reference to the stored value.
template<class U = std::remove_cv_t<T>>
constexpr
T
value_or(U&& u) &&;
Return Value
T
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U = std::remove_cv_t<T>>
constexpr
T
value_or(U&& u) const &;
Description
Returns the stored value if there is one, otherwise returns u
Return Value
T
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U = std::remove_cv_t<T>>
constexpr
T
value_or(U&& u) &&;
Return Value
T
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Converts the optional to a boolean indicating whether it has a value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
explicit
operator bool() const noexcept;
Return Value
bool
The empty state of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
empty _ = {};
The stored value of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
T value_;
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
class optional<T&>;
Types
Name |
Description |
The type of the iterator for the optional. |
|
The type of the value stored in the optional. |
Member Functions
Name |
Description |
|
Constructors |
|
Destructor. |
Assignment operators |
|
Applies a function to the stored value if there is one. |
|
Returns an iterator to the beginning of the optional. |
|
Converting copy assignment operator. |
|
Returns an iterator to the end of the optional. |
|
Checks if the optional has a value. |
|
Returns a reference to the stored value. |
|
Returns a pointer to the stored value. |
|
Calls a function if the optional is empty. |
|
Resets the optional to an empty state. |
|
Swaps the contents of this optional with another. |
|
Applies a function to the stored value if there is one. |
|
Returns the stored value if there is one, otherwise throws |
|
Returns the stored value if there is one, otherwise returns |
|
Converts the optional to a boolean value. |
Friends
Name |
Description |
The type of the iterator for the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
using iterator = /* implementation-defined */::contiguous_iterator<T, optional>;
The type of the value stored in the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
using value_type = T;
Constructors
Synopses
Declared in <beman/optional/optional.hpp>
Default constructor.
constexpr
optional() noexcept = default;
Copy constructor.
Constructs an empty optional.
constexpr
optional(nullopt_t value) noexcept;
Constructs an optional from another optional of type U
template<class U>
requires (std::is_constructible_v<T&, U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, U&>)
constexpr
optional(optional<U>& rhs) = delete;
Constructs an optional from another optional of type U.
template<class U>
requires (std::is_constructible_v<T&, U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, U&>)
constexpr
explicit(!std::is_convertible_v<U &, T &>)
optional(optional<U>& rhs) noexcept(std::is_nothrow_constructible_v<T &, U &>);
Constructs an optional from another optional of type U
template<class U>
requires (std::is_constructible_v<T&, const U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, const U&>)
constexpr
optional(optional<U> const& rhs) = delete;
Constructs an optional from another optional of type U.
template<class U>
requires (std::is_constructible_v<T&, const U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, const U&>)
constexpr
explicit(!std::is_convertible_v<const U &, T &>)
optional(optional<U> const& rhs) noexcept(std::is_nothrow_constructible_v<T &, const U &>);
Constructs an optional from a U, but deletes the constructor if
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
optional(U&& u) = delete;
Construct from a U
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 an optional from another optional of type U
template<class U>
requires (std::is_constructible_v<T&, U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, U>)
constexpr
optional(optional<U>&& rhs) = delete;
Constructs an optional from another optional of type U.
template<class U>
requires (std::is_constructible_v<T&, U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, U>)
constexpr
explicit(!std::is_convertible_v<U, T &>)
optional(optional<U>&& rhs) noexcept(noexcept(std::is_nothrow_constructible_v<T &, U>));
Constructs an optional from another optional of type U
template<class U>
requires (std::is_constructible_v<T&, const U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, const U>)
constexpr
optional(optional<U> const&& rhs) = delete;
Constructs an optional from another optional of type U.
template<class U>
requires (std::is_constructible_v<T&, const U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, const U>)
constexpr
explicit(!std::is_convertible_v<const U, T &>)
optional(optional<U> const&& rhs) noexcept(noexcept(std::is_nothrow_constructible_v<T &, const U>));
In‐place constructor.
template<class Arg>
requires (std::is_constructible_v<T&, Arg> && !detail::reference_constructs_from_temporary_v<T&, Arg>)
constexpr
explicit
optional(
in_place_t,
Arg&& arg);
Template Parameters
Name |
Description |
U |
|
Arg |
Parameters
Name |
Description |
rhs |
|
u |
|
arg |
Default constructor.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional() noexcept = default;
Copy constructor.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(optional const& rhs) noexcept = default;
Description
Constructs an empty optional if the rhs is empty, otherwise constructs the stored value from the rhs.
Parameters
Name |
Description |
rhs |
The object to copy construct from |
Constructs an empty optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional(nullopt_t value) noexcept;
Parameters
Name |
Description |
value |
The object to construct from |
Constructs an optional from another optional of type U
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, U&>)
constexpr
optional(optional<U>& rhs) = delete;
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from another optional of type U.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, U&>)
constexpr
explicit(!std::is_convertible_v<U &, T &>)
optional(optional<U>& rhs) noexcept(std::is_nothrow_constructible_v<T &, U &>);
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from another optional of type U
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, const U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, const U&>)
constexpr
optional(optional<U> const& rhs) = delete;
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from another optional of type U.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, const U&> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, const U&>)
constexpr
explicit(!std::is_convertible_v<const U &, T &>)
optional(optional<U> const& rhs) noexcept(std::is_nothrow_constructible_v<T &, const U &>);
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from a U, but deletes the constructor if
Synopsis
Declared in <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
optional(U&& u) = delete;
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
The object to move construct from |
Construct from a U
Synopsis
Declared in <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>);
Description
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.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Constructs an optional from another optional of type U
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, U>)
constexpr
optional(optional<U>&& rhs) = delete;
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from another optional of type U.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, U>)
constexpr
explicit(!std::is_convertible_v<U, T &>)
optional(optional<U>&& rhs) noexcept(noexcept(std::is_nothrow_constructible_v<T &, U>));
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from another optional of type U
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, const U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && detail::reference_constructs_from_temporary_v<T&, const U>)
constexpr
optional(optional<U> const&& rhs) = delete;
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
Constructs an optional from another optional of type U.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, const U> && !std::is_same_v<std::remove_cv_t<T>, optional<U>> &&
!std::is_same_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, const U>)
constexpr
explicit(!std::is_convertible_v<const U, T &>)
optional(optional<U> const&& rhs) noexcept(noexcept(std::is_nothrow_constructible_v<T &, const U>));
Description
Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If T&
can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
rhs |
In‐place constructor.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class Arg>
requires (std::is_constructible_v<T&, Arg> && !detail::reference_constructs_from_temporary_v<T&, Arg>)
constexpr
explicit
optional(
in_place_t,
Arg&& arg);
Template Parameters
Name |
Description |
Arg |
Parameters
Name |
Description |
arg |
Destructor.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
~optional() = default;
Description
Does not destroy the stored value, as it is a reference.
Assignment operators
Synopses
Declared in <beman/optional/optional.hpp>
Copy assignment operator.
constexpr
optional&
operator=(optional const& rhs) noexcept = default;
Assignment operator.
constexpr
optional<T&>&
operator=(nullopt_t value) noexcept;
Return Value
optional&
Parameters
Name |
Description |
rhs |
Copy assignment operator.
Synopsis
Return Value
optional&
Parameters
Name |
Description |
rhs |
Assignment operator.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T&>&
operator=(nullopt_t value) noexcept;
Return Value
optional&
Parameters
Name |
Description |
value |
The object to assign from |
Applies a function to the stored value if there is one.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
auto
and_then(F&& f) const;
Return Value
auto
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns an iterator to the beginning of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T&>::iterator
begin() const noexcept;
Return Value
iterator
Converting copy assignment operator.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U>
requires (std::is_constructible_v<T&, U> && !detail::reference_constructs_from_temporary_v<T&, U>)
constexpr
T&
emplace(U&& u) noexcept(std::is_nothrow_constructible_v<T &, U>);
Description
If rhs
has a value, assigns it to the stored value. Otherwise resets the stored value in *this
. If T&
can be constructed from a temporary, this assignment operator is deleted to prevent binding a temporary to a reference.
Return Value
optional&
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Returns an iterator to the end of the optional.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
optional<T&>::iterator
end() const noexcept;
Return Value
iterator
Checks if the optional has a value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
bool
has_value() const noexcept;
Return Value
bool
Returns a reference to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T&
operator*() const noexcept;
Return Value
T&
Returns a pointer to the stored value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T*
operator‐>() const noexcept;
Return Value
T*
Calls a function if the optional is empty.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
optional<T&>
or_else(F&& f) const;
Return Value
-
optional
-
optional<T&>
Template Parameters
Name |
Description |
F |
|
T |
Parameters
Name |
Description |
f |
Resets the optional to an empty state.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
void
reset() noexcept;
Swaps the contents of this optional with another.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
void
swap(optional& rhs) noexcept;
Parameters
Name |
Description |
rhs |
Applies a function to the stored value if there is one.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class F>
constexpr
optional<std::invoke_result_t<F, T&>>
transform(F&& f) const;
Return Value
optional<std::invoke_result_t<F, T&>>
Template Parameters
Name |
Description |
F |
Parameters
Name |
Description |
f |
Returns the stored value if there is one, otherwise throws
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
T&
value() const;
Return Value
T&
Returns the stored value if there is one, otherwise returns u
.
Synopsis
Declared in <beman/optional/optional.hpp>
template<class U = std::remove_cv_t<T>>
constexpr
std::remove_cv_t<T>
value_or(U&& u) const;
Return Value
std::remove_cv_t<T>
Template Parameters
Name |
Description |
U |
Parameters
Name |
Description |
u |
Converts the optional to a boolean value.
Synopsis
Declared in <beman/optional/optional.hpp>
constexpr
explicit
operator bool() const noexcept;
Return Value
bool
Synopses
Declared in <beman/optional/optional.hpp>
template<
int = 0,
class T>
constexpr
optional<std::decay_t<T>>
make_optional(T&& t) noexcept(std::is_nothrow_constructible_v<optional<std::decay_t<T>>, T>)
requires std::is_constructible_v<std::decay_t<T>, T>;
template<
typename T,
typename... Args>
constexpr
optional<T>
make_optional(Args...&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>)
requires std::is_constructible_v<T, Args...>;
template<
typename T,
typename U,
typename... Args>
constexpr
optional<T>
make_optional(
std::initializer_list<U> il,
Args...&&... args) noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U> &, Args...>)
requires std::is_constructible_v<T, std::initializer_list<U>&, Args...>;
Synopsis
Declared in <beman/optional/optional.hpp>
template<
int = 0,
class T>
constexpr
optional<std::decay_t<T>>
make_optional(T&& t) noexcept(std::is_nothrow_constructible_v<optional<std::decay_t<T>>, T>)
requires std::is_constructible_v<std::decay_t<T>, T>;
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename... Args>
constexpr
optional<T>
make_optional(Args...&&... args) noexcept(std::is_nothrow_constructible_v<T, Args...>)
requires std::is_constructible_v<T, Args...>;
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U,
typename... Args>
constexpr
optional<T>
make_optional(
std::initializer_list<U> il,
Args...&&... args) noexcept(std::is_nothrow_constructible_v<T, std::initializer_list<U> &, Args...>)
requires std::is_constructible_v<T, std::initializer_list<U>&, Args...>;
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
constexpr
void
swap(
optional<T>& x,
optional<T>& y) noexcept(noexcept(lhs.swap(rhs)))
requires std::is_move_constructible_v<T> && std::is_swappable_v<T>;
Equality operators
Synopses
Declared in <beman/optional/optional.hpp>
Equality operator
template<
typename T,
typename U>
constexpr
bool
operator==(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_eq_rel<T, U>;
Equality operator
template<class T>
constexpr
bool
operator==(
optional<T> const& lhs,
nullopt_t rhs) noexcept;
Equality operator
template<
typename T,
typename U>
constexpr
bool
operator==(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_eq_rel<T, U>;
Equality operator
template<
typename T,
typename U>
constexpr
bool
operator==(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_eq_rel<T, U>;
Equality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator==(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_eq_rel<T, U>;
Return Value
true
if the objects are equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Equality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
constexpr
bool
operator==(
optional<T> const& lhs,
nullopt_t rhs) noexcept;
Return Value
true
if the objects are equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Equality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator==(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_eq_rel<T, U>;
Return Value
true
if the objects are equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Equality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator==(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_eq_rel<T, U>;
Return Value
true
if the objects are equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Inequality operators
Synopses
Declared in <beman/optional/optional.hpp>
Inequality operator
template<
typename T,
typename U>
constexpr
bool
operator!=(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_ne_rel<T, U>;
Inequality operator
template<
typename T,
typename U>
constexpr
bool
operator!=(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_ne_rel<T, U>;
Inequality operator
template<
typename T,
typename U>
constexpr
bool
operator!=(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_ne_rel<T, U>;
Inequality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator!=(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_ne_rel<T, U>;
Return Value
true
if the objects are not equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Inequality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator!=(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_ne_rel<T, U>;
Return Value
true
if the objects are not equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Inequality operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator!=(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_ne_rel<T, U>;
Return Value
true
if the objects are not equal, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Less‐than operators
Synopses
Declared in <beman/optional/optional.hpp>
Less‐than operator
template<
typename T,
typename U>
constexpr
bool
operator<(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_lt_rel<T, U>;
Less‐than operator
template<
typename T,
typename U>
constexpr
bool
operator<(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_lt_rel<T, U>;
Less‐than operator
template<
typename T,
typename U>
constexpr
bool
operator<(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_lt_rel<T, U>;
Less‐than operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator<(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_lt_rel<T, U>;
Return Value
true
if the left object is less than the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Less‐than operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator<(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_lt_rel<T, U>;
Return Value
true
if the left object is less than the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Less‐than operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator<(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_lt_rel<T, U>;
Return Value
true
if the left object is less than the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Less‐than‐or‐equal operators
Synopses
Declared in <beman/optional/optional.hpp>
Less‐than‐or‐equal operator
template<
typename T,
typename U>
constexpr
bool
operator<=(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_le_rel<T, U>;
Less‐than‐or‐equal operator
template<
typename T,
typename U>
constexpr
bool
operator<=(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_le_rel<T, U>;
Less‐than‐or‐equal operator
template<
typename T,
typename U>
constexpr
bool
operator<=(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_le_rel<T, U>;
Less‐than‐or‐equal operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator<=(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_le_rel<T, U>;
Return Value
true
if the left object is less than or equal to the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Less‐than‐or‐equal operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator<=(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_le_rel<T, U>;
Return Value
true
if the left object is less than or equal to the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Less‐than‐or‐equal operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator<=(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_le_rel<T, U>;
Return Value
true
if the left object is less than or equal to the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Greater‐than operators
Synopses
Declared in <beman/optional/optional.hpp>
Greater‐than operator
template<
typename T,
typename U>
constexpr
bool
operator>(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_gt_rel<T, U>;
Greater‐than operator
template<
typename T,
typename U>
constexpr
bool
operator>(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_gt_rel<T, U>;
Greater‐than operator
template<
typename T,
typename U>
constexpr
bool
operator>(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_gt_rel<T, U>;
Greater‐than operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator>(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_gt_rel<T, U>;
Return Value
true
if the left object is greater than the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Greater‐than operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator>(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_gt_rel<T, U>;
Return Value
true
if the left object is greater than the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Greater‐than operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator>(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_gt_rel<T, U>;
Return Value
true
if the left object is greater than the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Greater‐than‐or‐equal operators
Synopses
Declared in <beman/optional/optional.hpp>
Greater‐than‐or‐equal operator
template<
typename T,
typename U>
constexpr
bool
operator>=(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_ge_rel<T, U>;
Greater‐than‐or‐equal operator
template<
typename T,
typename U>
constexpr
bool
operator>=(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_ge_rel<T, U>;
Greater‐than‐or‐equal operator
template<
typename T,
typename U>
constexpr
bool
operator>=(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_ge_rel<T, U>;
Greater‐than‐or‐equal operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator>=(
optional<T> const& lhs,
optional<U> const& rhs)
requires detail::optional_ge_rel<T, U>;
Return Value
true
if the left object is greater than or equal to the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Greater‐than‐or‐equal operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator>=(
optional<T> const& lhs,
U const& rhs)
requires detail::optional_ge_rel<T, U>;
Return Value
true
if the left object is greater than or equal to the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Greater‐than‐or‐equal operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
constexpr
bool
operator>=(
T const& lhs,
optional<U> const& rhs)
requires detail::optional_ge_rel<T, U>;
Return Value
true
if the left object is greater than or equal to the right object, false
otherwise
Parameters
Name |
Description |
lhs |
The left operand |
rhs |
The right operand |
Three‐way comparison operators
Synopses
Declared in <beman/optional/optional.hpp>
Three‐way comparison operator
template<
typename T,
std::three_way_comparable_with<T> U>
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
optional<T> const& x,
optional<U> const& y);
Three‐way comparison operator
template<class T>
constexpr
std::strong_ordering
operator<=>(
optional<T> const& x,
nullopt_t rhs) noexcept;
Three‐way comparison operator
template<
typename T,
typename U>
requires (!is_derived_from_optional<U>) && std::three_way_comparable_with<T, U>
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
optional<T> const& x,
U const& v);
Three‐way comparison operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
std::three_way_comparable_with<T> U>
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
optional<T> const& x,
optional<U> const& y);
Return Value
The relative order of the objects
Parameters
Name |
Description |
x |
The left operand |
y |
The right operand |
Three‐way comparison operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
constexpr
std::strong_ordering
operator<=>(
optional<T> const& x,
nullopt_t rhs) noexcept;
Return Value
The relative order of the objects
Parameters
Name |
Description |
x |
The left operand |
rhs |
The right operand |
Three‐way comparison operator
Synopsis
Declared in <beman/optional/optional.hpp>
template<
typename T,
typename U>
requires (!is_derived_from_optional<U>) && std::three_way_comparable_with<T, U>
constexpr
std::compare_three_way_result_t<T, U>
operator<=>(
optional<T> const& x,
U const& v);
Return Value
The relative order of the objects
Parameters
Name |
Description |
x |
The left operand |
v |
The right operand |
Synopsis
Declared in <beman/optional/optional.hpp>
inline constexpr in_place_t in_place = in_place{};
Tag to disengage optional objects.
Synopsis
Declared in <beman/optional/optional.hpp>
inline constexpr nullopt_t nullopt = nullopt{nullopt_t::Tag::tag};
Synopsis
Declared in <beman/optional/optional.hpp>
template<class T>
concept is_derived_from_optional = requires(const T& t) { // exposition only
[]<class U>(const optional<U>&) {}(t);
};
Created with MrDocs