|
5.0.0
Freundlich's C++ toolkit
|
Contains fcppt::either::object and helper types/functions for it. More...
Classes | |
| struct | is_object |
| struct | is_object< fcppt::either::object< Failure, Success > > |
| struct | no_error |
| class | object |
| A class that either holds a success or an error value. More... | |
Typedefs | |
| template<typename Failure> | |
| using | error = fcppt::either::object<Failure, fcppt::either::no_error> |
| An either without a success value. | |
| template<fcppt::either::object_concept Either> | |
| using | failure_move_type |
| The moved failure type of an either. | |
| template<fcppt::either::object_concept Either> | |
| using | failure_reference_type = decltype(std::declval<Either>().get_failure_unsafe()) |
| The failure reference type of an either. | |
| template<fcppt::either::object_concept Either> | |
| using | failure_type = typename std::remove_cvref_t<Either>::failure |
| The failure type of an either. | |
| template<typename Container> | |
| using | partition_result |
| The result of fcppt::either::partition. | |
| template<fcppt::either::object_concept Either> | |
| using | success_move_type |
| The moved success type of an either. | |
| template<fcppt::either::object_concept Either> | |
| using | success_reference_type = decltype(std::declval<Either>().get_success_unsafe()) |
| The success reference type of an either. | |
| template<fcppt::either::object_concept Either> | |
| using | success_type = typename std::remove_cvref_t<Either>::success |
| The success type of an either. | |
| template<fcppt::either::object_concept Either> | |
| using | variant_type |
| The variant type of an either. | |
Functions | |
| template<fcppt::either::object_concept Either1, fcppt::either::object_concept... Eithers, fcppt::concepts::invocable_move< fcppt::either::success_move_type< Either1 >, fcppt::either::success_move_type< Eithers >... > Function> requires ( std::is_same_v<fcppt::either::failure_type<Either1>, fcppt::either::failure_type<Eithers>> &&...) | |
| fcppt::either::object< fcppt::either::failure_type< Either1 >, std::invoke_result_t< Function, fcppt::either::success_move_type< Either1 >, fcppt::either::success_move_type< Eithers >... > > | apply (Function const &_function, Either1 &&_either1, Eithers &&..._eithers) |
| Applies a function to several eithers. | |
| template<fcppt::either::object_concept Either, fcppt::concepts::invocable_move< fcppt::either::success_move_type< Either > > Function> requires fcppt::either::is_object_v< std::invoke_result_t<Function, fcppt::either::success_move_type<Either>>> && std::is_same_v< fcppt::either::failure_type<Either>, fcppt::either::failure_type< std::invoke_result_t<Function, fcppt::either::success_move_type<Either>>>> | |
| std::invoke_result_t< Function, fcppt::either::success_move_type< Either > > | bind (Either &&_either, Function const &_function) |
| Monadic bind on the success type of an either. | |
| template<typename Failure, typename Success> | |
| bool | operator== (fcppt::either::object< Failure, Success > const &_a, fcppt::either::object< Failure, Success > const &_b) |
| Compares two eithers for equality. | |
| template<typename Failure, typename Success> | |
| bool | operator!= (fcppt::either::object< Failure, Success > const &_a, fcppt::either::object< Failure, Success > const &_b) |
| Compares two eithers for inequality. | |
| template<fcppt::concepts::invocable_move Failure, fcppt::concepts::invocable_move Success> | |
| fcppt::either::object< std::invoke_result_t< Failure >, std::invoke_result_t< Success > > | construct (bool const _value, Success const &_success, Failure const &_failure) |
| Constructs an either by calling one of two functions. | |
| template<fcppt::optional::object_concept Optional> | |
| fcppt::either::error< fcppt::optional::value_type< Optional > > | error_from_optional (Optional &&_optional) |
| Converts an optional error to an either. | |
| template<fcppt::either::object_concept Either> | |
| fcppt::optional::object< fcppt::either::failure_type< Either > > | failure_opt (Either &&_either) |
| Returns the failure type as an optional. | |
| template<typename Functions> requires fcppt::concepts::invocable_move<fcppt::type_traits::value_type<Functions>> && fcppt::either::is_object_v<std::invoke_result_t<fcppt::type_traits::value_type<Functions>>> | |
| fcppt::either::object< std::vector< fcppt::either::failure_type< std::invoke_result_t< fcppt::type_traits::value_type< Functions > > > >, fcppt::either::success_type< std::invoke_result_t< fcppt::type_traits::value_type< Functions > > > > | first_success (Functions const &_functions) |
| Call a container of functions, returning their first success or a container of failures. | |
| template<fcppt::optional::object_concept Optional, fcppt::concepts::invocable_move FailureFunction> | |
| fcppt::either::object< std::invoke_result_t< FailureFunction >, fcppt::optional::value_type< Optional > > | from_optional (Optional &&_optional, FailureFunction const &_failure_function) |
| Converts an optional to an either. | |
| template<fcppt::either::object_concept Either> requires fcppt::either::is_object_v<fcppt::either::success_type<Either>> && std::is_same_v< fcppt::either::failure_type<Either>, fcppt::either::failure_type<fcppt::either::success_type<Either>>> | |
| fcppt::either::object< fcppt::either::failure_type< Either >, fcppt::either::success_type< fcppt::either::success_type< Either > > > | join (Either &&_either) |
| Removes one layer of eithers. | |
| template<fcppt::concepts::invocable_move Next, std::invocable< fcppt::either::success_type< std::invoke_result_t< Next > > > Loop> requires fcppt::either::is_object_v<std::invoke_result_t<Next>> | |
| fcppt::either::failure_type< std::invoke_result_t< Next > > | loop (Next const &_next, Loop const &_loop) |
| Loops a function returning an either. | |
| template<fcppt::concepts::move_constructible Success, typename Failure> | |
| fcppt::either::object< std::remove_cvref_t< Failure >, Success > | make_failure (Failure &&_failure) |
| Create an either with a failure. | |
| template<fcppt::concepts::move_constructible Failure, typename Success> | |
| fcppt::either::object< Failure, std::remove_cvref_t< Success > > | make_success (Success &&_success) |
| Create an either with a success. | |
| template<fcppt::either::object_concept Either, fcppt::concepts::invocable_move< fcppt::either::success_move_type< Either > > Function> | |
| fcppt::either::object< fcppt::either::failure_type< Either >, std::invoke_result_t< Function, fcppt::either::success_move_type< Either > > > | map (Either &&_either, Function const &_function) |
| Maps over the success type of an either. | |
| template<fcppt::either::object_concept Either, fcppt::concepts::invocable_move< fcppt::either::failure_move_type< Either > > Function> | |
| fcppt::either::object< std::invoke_result_t< Function, fcppt::either::failure_move_type< Either > >, fcppt::either::success_type< Either > > | map_failure (Either &&_either, Function const &_function) |
| Maps over the failure type of an either. | |
| template<fcppt::either::object_concept Either, std::invocable< fcppt::either::failure_move_type< Either > > FailureFunction, std::invocable< fcppt::either::success_move_type< Either > > SuccessFunction> requires std::is_same_v< std::invoke_result_t<SuccessFunction, fcppt::either::success_move_type<Either>>, std::invoke_result_t<FailureFunction, fcppt::either::failure_move_type<Either>>> | |
| std::invoke_result_t< SuccessFunction, fcppt::either::success_move_type< Either > > | match (Either &&_either, FailureFunction const &_failure_function, SuccessFunction const &_success_function) |
| Matches on the two cases of an either. | |
| bool | operator== (fcppt::either::no_error const &, fcppt::either::no_error const &) |
| Comparison of fcppt::either::no_error. | |
| template<typename Ch, typename Traits> | |
| std::basic_ostream< Ch, Traits > & | operator<< (std::basic_ostream< Ch, Traits > &_stream, fcppt::either::no_error const &) |
| Outputs fcppt::either::no_error. | |
| template<typename Failure, typename Success, typename Ch, typename Traits> | |
| std::basic_ostream< Ch, Traits > & | operator<< (std::basic_ostream< Ch, Traits > &_stream, fcppt::either::object< Failure, Success > const &_either) |
| Outputs an either to a basic_ostream. | |
| template<typename Source> | |
| fcppt::either::partition_result< Source > | partition (Source &&_source) |
| Partitions a container of variants into multiple containers. | |
| template<fcppt::either::object_concept Result, typename Source> | |
| Result | sequence (Source &&_source) |
| Sequences a container of eithers. | |
| template<typename Sequence, fcppt::concepts::invocable_move< fcppt::container::to_value_type< std::remove_reference_t< Sequence > > > Function> requires fcppt::either::is_object_v<std::invoke_result_t< Function, fcppt::container::to_value_type<std::remove_reference_t<Sequence>>>> && std::is_same_v< fcppt::either::success_type<std::invoke_result_t< Function, fcppt::container::to_value_type<std::remove_reference_t<Sequence>>>>, fcppt::either::no_error> | |
| std::invoke_result_t< Function, fcppt::container::to_value_type< std::remove_reference_t< Sequence > > > | sequence_error (Sequence &&_sequence, Function const &_function) |
| Folds over a range, breaking out on the first error. | |
| template<fcppt::either::object_concept Either> | |
| fcppt::optional::object< fcppt::either::success_type< Either > > | success_opt (Either &&_either) |
| Returns the success type as an optional. | |
| template<fcppt::either::object_concept Either, fcppt::concepts::invocable_move< fcppt::either::failure_move_type< Either > > MakeException> | |
| fcppt::either::success_move_type< Either > | to_exception (Either &&_either, MakeException const _make_exception) |
| Returns the success value contained in an either or throws an exception. | |
| template<fcppt::either::object_concept Either> | |
| fcppt::either::variant_type< std::remove_cvref_t< Either > > | to_variant (Either &&_source) |
| Converts an either into a variant. | |
| template<fcppt::concepts::move_constructible Exception, fcppt::concepts::invocable_move Function, fcppt::concepts::invocable_move< Exception > ToException> | |
| FCPPT_PP_PUSH_WARNING fcppt::either::object< std::invoke_result_t< ToException, Exception >, std::invoke_result_t< Function > > | try_call (Function const &_function, ToException const &_to_exception) |
| Catches exceptions of a function call and puts the result in an either. | |
Variables | |
| template<typename T> | |
| constexpr bool | is_object_v = fcppt::either::is_object<T>::value |
| Checks if a given type is an fcppt::either::object. | |
Contains fcppt::either::object and helper types/functions for it.