16 constexpr auto operator()(
auto&& value)
const -> T {
return T(util::forward<
decltype(value)>(value)); }
17 constexpr auto operator()() const -> T {
return T(); }
23 template<
template<
typename...>
typename Monad,
typename T,
typename... Args>
24 struct MonadValue<Monad<T, Args...>> : meta::TypeConstant<T> {};
29 requires(!concepts::LValueReference<T> || !concepts::LValueReference<meta::Type<MonadValue<M>>>)
30 constexpr auto operator()(T&&
value)
const {
31 return util::forward<T>(value);
34 constexpr auto operator()(
auto& value)
const
35 requires(concepts::LValueReference<meta::Type<MonadValue<M>>>)
40 constexpr void operator()()
const {}
57template<
template<
typename...>
typename T>
Definition monad_concept.h:45
Definition monad_concept.h:58
Definition any_storable.h:9
constexpr auto bind
Definition monad_bind.h:14
constexpr auto fmap
Definition monad_fmap.h:14
constexpr auto enable_monad
Definition monad_enable.h:18
constexpr auto value
Definition value.h:34
constexpr auto in_place_type
Definition in_place_type.h:12
constexpr auto ref
Definition reference_wrapper.h:98