26#ifndef DUMUX_COMMON_OPTIONAL_HH
27#define DUMUX_COMMON_OPTIONAL_HH
29#warning "This header is deprecated and will be removed after release 3.2"
32#include <dune/common/typeutilities.hh>
42class [[deprecated(
"Optional is deprecated (removed after 3.2); use std::optional")]]
Optional
50 template<
class TT, Dune::disableCopyMove<Optional, TT> = 0>
60 p_ =
new (buffer_) T(std::move(other.value()));
68 p_ =
new (buffer_) T(other.
value());
79 template<
class TT, Dune::disableCopyMove<Optional, TT> = 0 >
83 *p_ = std::forward<T>(t);
85 p_ =
new (buffer_) T(std::forward<T>(t));
92 *
this = other.
value();
93 else if (
operator bool())
104 *
this = std::move(other.value());
105 else if (
operator bool())
113 explicit operator bool()
const
128 template<
class... Args >
133 p_ =
new (buffer_) T(std::forward<Args>(args)...);
147 alignas(T)
char buffer_[
sizeof(T)];
Optional(TT &&t)
Definition optional.hh:51
~Optional()
Definition optional.hh:73
Optional & operator=(const Optional &other)
Definition optional.hh:89
T & value()
Definition optional.hh:123
Optional & operator=(TT &&t)
Definition optional.hh:80
Optional & operator=(Optional &&other)
Definition optional.hh:101
const T & value() const
Definition optional.hh:118
Optional(const Optional &other)
Definition optional.hh:65
Optional(Optional &&other)
Definition optional.hh:57
void emplace(Args &&... args)
Definition optional.hh:129
Optional()
Definition optional.hh:46
void release()
Definition optional.hh:136