|
| template<typename... ARGS> |
| constexpr auto | ghassanpl::make_single_time_function (std::function< void(ARGS...)> func) |
| | Returns a function that calls func when invoked, but only the first time.
|
| template<typename FUNC> |
| constexpr auto | ghassanpl::make_single_time_function (FUNC &&func) |
| | Returns a function that calls func when invoked, but only the first time.
|
| template<typename T, typename FUNC> |
| constexpr auto | ghassanpl::transformed (std::optional< T > const &value, FUNC &&func) -> decltype(std::optional{ func(value.value()) }) |
| | Pre C++23 transform/fmap.
|
| template<typename T, typename FUNC> |
| constexpr auto | ghassanpl::transformed (std::optional< T > &&value, FUNC &&func) -> decltype(std::optional{ func(value.value()) }) |
| | Pre C++23 transform/fmap.
|
| template<typename T> |
| std::optional< T > | ghassanpl::to_optional (T *value) noexcept |
| template<typename T> |
| std::optional< T > | ghassanpl::move_to_optional (T *value) noexcept |
| template<typename T> |
| constexpr auto | ghassanpl::flattened (std::optional< std::optional< T > > &&value) |
| template<typename T> |
| constexpr auto | ghassanpl::flattened (std::optional< T > &&value) |
| template<typename T> |
| constexpr auto | ghassanpl::flattened (std::optional< std::optional< T > > const &value) |
| template<typename T> |
| constexpr auto | ghassanpl::flattened (std::optional< T > const &value) |
| template<typename T, typename FUNC> |
| constexpr T | ghassanpl::resulting (FUNC &&func) |
| | Returns a new T transformed by func.
|
| template<typename FUNC> |
| | ghassanpl::GHPL_REQUIRES ((!std::is_void_v< typename decltype(detail::detect_first_arg(std::function{ std::declval< FUNC >() }))::type > &&requires { std::function{ std::declval< FUNC >() };})) const expr auto resulting(FUNC &&func) |
| | Returns a new object transformed by func. The first argument to func determines what the object's type is.
|
| template<typename T, typename... ARGS> |
| constexpr std::optional< T > | ghassanpl::optional_get (std::variant< ARGS... > const &var) noexcept |
| | Variant operations.
|
| template<typename FUNC, typename... Ts> |
| constexpr auto | ghassanpl::transformed (std::variant< Ts... > const &var, FUNC &&func) |
| | Returns a new variant transformed by func.
|
|
template<typename... TYPES> |
| | ghassanpl::convertible_to_variant (std::variant< TYPES... >) -> convertible_to_variant< TYPES... > |
|
template<typename T> |
| | ghassanpl::convertible_to_variant (T) -> convertible_to_variant< remove_cvref_t< T > > |
| template<typename FUNC, typename... Ts> |
| constexpr auto | ghassanpl::transformed_flattened (std::variant< Ts... > const &var, FUNC &&func) |
| | Returns a new variant transformed by func, flattened.
|
Useful functions and types for functional-style programming.
Additional useful delegates (like std::function<>)
template<typename T, typename... ARGS>
| std::optional< T > ghassanpl::optional_get |
( |
std::variant< ARGS... > const & | var | ) |
|
|
nodiscardconstexprnoexcept |
Variant operations.
Returns an std::optional<T> with a copy of the value in the variant, if T is currently in the variant, or nullopt otherwise
Definition at line 346 of file functional.h.