23#include "rawspeedconfig.h"
37 template <
typename U = T>
38 requires(!std::same_as<U, Optional<T>> && !std::same_as<U, Optional<T>&> &&
39 !std::same_as<U, Optional<T> &&> &&
40 !std::same_as<U, std::optional<T>>)
44 template <
typename U = T>
45 requires(std::same_as<U, T>)
47 impl = std::forward<U>(value);
51 template <
typename... Args>
T&
emplace(Args&&... args) {
52 return impl.emplace(std::forward<Args>(args)...);
77 return std::move(
impl.value());
82 return std::move(
impl.value());
85 [[nodiscard]]
bool has_value() const RAWSPEED_READNONE {
86 return impl.has_value();
89 explicit operator bool()
const {
return has_value(); }
91 template <
typename U>
T value_or(U&& fallback)
const& {
92 return impl.value_or(std::forward<U>(fallback));
98template <
typename T,
typename U>
100 return lhs && *lhs == rhs;
103template <
typename T,
typename U>
const T && operator*() const &&
T value_or(U &&fallback) const &
T & emplace(Args &&... args)
bool has_value() const RAWSPEED_READNONE
const T & operator*() const &
const T * operator->() const
bool operator==(const AlignedAllocator< T1, A1 > &, const AlignedAllocator< T2, A2 > &)