1#ifndef KOKKOS_EXECUTION_IMPL_OPTIONAL_STORAGE_HPP
2#define KOKKOS_EXECUTION_IMPL_OPTIONAL_STORAGE_HPP
6#include "Kokkos_Core.hpp"
34 template <
typename... Args>
35 constexpr auto emplace(Args&&... args)
noexcept(std::is_nothrow_constructible_v<T, Args...>) -> T& {
37 auto& ref =
m_storage.__construct(std::forward<Args>(args)...);
42 template <
typename Func,
typename... Args>
44 noexcept(
noexcept(T{std::forward<Func>(func)(std::forward<Args>(args)...)})) -> T& {
46 auto& ref =
m_storage.__construct_from(std::forward<Func>(func), std::forward<Args>(args)...);
51 constexpr void reset() noexcept {
57 constexpr auto get() &
noexcept -> T& {
62 constexpr auto get() const & noexcept -> const T& {
67 constexpr auto get() &&
noexcept -> T&& {
72 constexpr auto get() const && noexcept -> const T&& = delete;
74 constexpr auto operator->() noexcept -> T* {
84 constexpr explicit operator bool() const noexcept {
OptionalStorage(const OptionalStorage &)=delete
constexpr auto emplace_from(Func &&func, Args &&... args) noexcept(noexcept(T{std::forward< Func >(func)(std::forward< Args >(args)...)})) -> T &
OptionalStorage(OptionalStorage &&)=delete
constexpr void reset() noexcept
constexpr auto get() &noexcept -> T &
OptionalStorage & operator=(const OptionalStorage &)=delete
constexpr auto get() const &&noexcept -> const T &&=delete
constexpr OptionalStorage() noexcept=default
constexpr auto emplace(Args &&... args) noexcept(std::is_nothrow_constructible_v< T, Args... >) -> T &
OptionalStorage & operator=(OptionalStorage &&)=delete
constexpr auto get() &&noexcept -> T &&
constexpr bool has_value() const noexcept
constexpr auto get() const &noexcept -> const T &
constexpr auto operator->() const noexcept -> const T *
stdexec::__manual_lifetime< T > m_storage