18 #if __cpp_lib_optional >= 201606 21 #include <type_traits> 26 #if __cpp_lib_optional >= 201606 28 struct opt :
private std::optional<T> {
31 this->std::optional<T>::operator=(
std::move(
t));
34 using std::optional<T>::operator*;
35 using std::optional<T>::operator bool;
42 std::aligned_union_t<0, T>
data_;
44 return static_cast<T*
>((
void*)&data_);
47 return static_cast<const T*
>((
const void*)&data_);
75 ::new (
ptr())
T(*that);
83 std::is_nothrow_move_constructible<
T>::
value&&
84 std::is_nothrow_move_assignable<
T>::
value) {
102 ::new (
ptr())
T(*that);
108 std::is_nothrow_move_constructible<
T>::
value&&
109 std::is_nothrow_move_assignable<
T>::
value) {
constexpr detail::Map< Move > move
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
opt & operator=(T &&t) noexcept(std::is_nothrow_move_constructible< T >::value &&std::is_nothrow_move_assignable< T >::value)
opt & operator=(const T &t)
const T & operator*() const noexcept
opt & operator=(const opt &that)
opt(T &&t) noexcept(std::is_nothrow_move_constructible< T >::value)
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
opt & operator=(opt &&that) noexcept(std::is_nothrow_move_constructible< T >::value &&std::is_nothrow_move_assignable< T >::value)
opt(opt &&that) noexcept(std::is_nothrow_move_constructible< T >::value)
std::aligned_union_t< 0, T > data_