mirror of
https://github.com/TartanLlama/expected.git
synced 2025-08-03 10:54:31 +02:00
Fix #14
This commit is contained in:
@@ -367,3 +367,19 @@ TEST_CASE("And then extensions", "[extensions.and_then]") {
|
|||||||
REQUIRE(ret.error() == 21);
|
REQUIRE(ret.error() == 21);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct S {
|
||||||
|
int x;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct F {
|
||||||
|
int x;
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_CASE("14", "[issue.14]") {
|
||||||
|
auto res = tl::expected<S,F>{tl::unexpect, F{}};
|
||||||
|
|
||||||
|
res.map_error([](F f) {
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@@ -1871,7 +1871,7 @@ auto map_impl(Exp &&exp, F &&f) -> expected<void, err_t<Exp>> {
|
|||||||
!defined(TL_EXPECTED_GCC54)
|
!defined(TL_EXPECTED_GCC54)
|
||||||
template <class Exp, class F,
|
template <class Exp, class F,
|
||||||
class Ret = decltype(detail::invoke(std::declval<F>(),
|
class Ret = decltype(detail::invoke(std::declval<F>(),
|
||||||
*std::declval<Exp>())),
|
std::declval<Exp>().error())),
|
||||||
detail::enable_if_t<!std::is_void<Ret>::value> * = nullptr>
|
detail::enable_if_t<!std::is_void<Ret>::value> * = nullptr>
|
||||||
constexpr auto map_error_impl(Exp &&exp, F &&f) {
|
constexpr auto map_error_impl(Exp &&exp, F &&f) {
|
||||||
using result = expected<exp_t<Exp>, detail::decay_t<Ret>>;
|
using result = expected<exp_t<Exp>, detail::decay_t<Ret>>;
|
||||||
@@ -1882,7 +1882,7 @@ constexpr auto map_error_impl(Exp &&exp, F &&f) {
|
|||||||
}
|
}
|
||||||
template <class Exp, class F,
|
template <class Exp, class F,
|
||||||
class Ret = decltype(detail::invoke(std::declval<F>(),
|
class Ret = decltype(detail::invoke(std::declval<F>(),
|
||||||
*std::declval<Exp>())),
|
std::declval<Exp>().error())),
|
||||||
detail::enable_if_t<std::is_void<Ret>::value> * = nullptr>
|
detail::enable_if_t<std::is_void<Ret>::value> * = nullptr>
|
||||||
auto map_error_impl(Exp &&exp, F &&f) {
|
auto map_error_impl(Exp &&exp, F &&f) {
|
||||||
using result = expected<exp_t<Exp>, monostate>;
|
using result = expected<exp_t<Exp>, monostate>;
|
||||||
@@ -1896,7 +1896,7 @@ auto map_error_impl(Exp &&exp, F &&f) {
|
|||||||
#else
|
#else
|
||||||
template <class Exp, class F,
|
template <class Exp, class F,
|
||||||
class Ret = decltype(detail::invoke(std::declval<F>(),
|
class Ret = decltype(detail::invoke(std::declval<F>(),
|
||||||
*std::declval<Exp>())),
|
std::declval<Exp>().error())),
|
||||||
detail::enable_if_t<!std::is_void<Ret>::value> * = nullptr>
|
detail::enable_if_t<!std::is_void<Ret>::value> * = nullptr>
|
||||||
constexpr auto map_error_impl(Exp &&exp, F &&f)
|
constexpr auto map_error_impl(Exp &&exp, F &&f)
|
||||||
-> expected<exp_t<Exp>, detail::decay_t<Ret>> {
|
-> expected<exp_t<Exp>, detail::decay_t<Ret>> {
|
||||||
@@ -1910,7 +1910,7 @@ constexpr auto map_error_impl(Exp &&exp, F &&f)
|
|||||||
|
|
||||||
template <class Exp, class F,
|
template <class Exp, class F,
|
||||||
class Ret = decltype(detail::invoke(std::declval<F>(),
|
class Ret = decltype(detail::invoke(std::declval<F>(),
|
||||||
*std::declval<Exp>())),
|
std::declval<Exp>().error())),
|
||||||
detail::enable_if_t<std::is_void<Ret>::value> * = nullptr>
|
detail::enable_if_t<std::is_void<Ret>::value> * = nullptr>
|
||||||
auto map_error_impl(Exp &&exp, F &&f) -> expected<exp_t<Exp>, monostate> {
|
auto map_error_impl(Exp &&exp, F &&f) -> expected<exp_t<Exp>, monostate> {
|
||||||
using result = expected<exp_t<Exp>, monostate>;
|
using result = expected<exp_t<Exp>, monostate>;
|
||||||
|
Reference in New Issue
Block a user