 |
FastCDR
Version 2.3.6
FastCDR
|
15 #ifndef _FASTCDR_XCDR_OPTIONAL_HPP_
16 #define _FASTCDR_XCDR_OPTIONAL_HPP_
21 #include "detail/optional.hpp"
22 #include "../exceptions/BadOptionalAccessException.hpp"
57 const T& val) noexcept
59 ::new(&storage_.
val_)T(val);
67 ::new(&storage_.
val_)T(std::move(val));
75 if (val.storage_.engaged_)
77 ::new(&storage_.
val_)T(val.storage_.val_);
86 if (val.storage_.engaged_)
88 ::new(&storage_.
val_)T(std::move(val.storage_.val_));
95 #if defined(__GNUC__) && __GNUC__ >= 12
98 #endif // if defined(__GNUC__) && __GNUC__ >= 12
110 storage_.
val_.T(std::forward<Args>(_args)...);
121 bool initial_engaged =
false)
127 storage_.
engaged_ = initial_engaged;
130 ::new(&storage_.
val_)T();
148 return storage_.
val_;
165 return storage_.
val_;
182 return std::move(storage_.
val_);
199 return std::move(storage_.
val_);
215 #if defined(__GNUC__) && __GNUC__ >= 12
218 #endif // if defined(__GNUC__) && __GNUC__ >= 12
224 ::new(&storage_.
val_)T(opt.storage_.
val_);
232 #if defined(__GNUC__) && __GNUC__ >= 12
235 #endif // if defined(__GNUC__) && __GNUC__ >= 12
241 ::new(&storage_.
val_)T(std::move(opt.storage_.
val_));
251 ::new(&storage_.
val_)T(val);
261 ::new(&storage_.
val_)T(std::move(val));
298 return storage_.
val_;
310 return storage_.
val_;
322 return std::move(storage_.
val_);
334 return std::move(storage_.
val_);
346 return std::addressof(storage_.
val_);
358 return std::addressof(storage_.
val_);
362 explicit operator bool() const noexcept
375 #endif //_FASTCDR_XCDR_OPTIONAL_HPP_
T type
Definition: optional.hpp:50
optional(const optional< T > &val) noexcept
Copy constructor.
Definition: optional.hpp:72
static constexpr nullopt_t nullopt
nullopt is a constant of type nullopt_t that is used to indicate optional type with uninitialized sta...
Definition: optional.hpp:40
optional(optional< T > &&val) noexcept
Move constructor.
Definition: optional.hpp:83
bool engaged_
Definition: optional.hpp:32
const T && operator*() const &&noexcept
Accesses the contained value.
Definition: optional.hpp:332
T & value() &
Returns the contained value.
Definition: optional.hpp:140
T val_
Definition: optional.hpp:29
An empty class type used to indicate optional type with uninitialized state.
Definition: optional.hpp:28
optional(T &&val) noexcept
Move constructor from an instance of the templated class.
Definition: optional.hpp:64
optional & operator=(const optional &opt)
Assigns content from an optional.
Definition: optional.hpp:213
T & operator*() &noexcept
Accesses the contained value.
Definition: optional.hpp:296
const T & value() const &
Returns the contained value.
Definition: optional.hpp:157
constexpr nullopt_t(int)
Definition: optional.hpp:30
bool operator==(const optional &opt_val) const
Compares optional values.
Definition: optional.hpp:275
This class template manages an optional contained value, i.e.
Definition: optional.hpp:46
void emplace(Args &&... _args)
Constructs the contained value in-place.
Definition: optional.hpp:106
T && value() &&
Returns the contained value.
Definition: optional.hpp:174
optional()=default
Default constructor.
static const char *const BAD_OPTIONAL_ACCESS_MESSAGE_DEFAULT
Default message used in the library.
Definition: BadOptionalAccessException.hpp:78
This class is thrown as an exception when accessing the value of a null optional.
Definition: BadOptionalAccessException.hpp:27
const T && value() const &&
Returns the contained value.
Definition: optional.hpp:191
bool has_value() const
Checks whether the optional contains a value.
Definition: optional.hpp:207
void reset(bool initial_engaged=false)
Reset the state of the optional.
Definition: optional.hpp:120
Definition: fixed_size_string.hpp:32
T * operator->() noexcept
Accesses the contained value.
Definition: optional.hpp:344
bool operator!=(const optional &opt_val) const
Compares optional values.
Definition: optional.hpp:283
~optional()=default
Destructor.
optional(const T &val) noexcept
Copy constructor from an instance of the templated class.
Definition: optional.hpp:56