diff --git a/tests/extensions.cpp b/tests/extensions.cpp index 39cd46c..12b21b5 100644 --- a/tests/extensions.cpp +++ b/tests/extensions.cpp @@ -367,3 +367,19 @@ TEST_CASE("And then extensions", "[extensions.and_then]") { REQUIRE(ret.error() == 21); } } + +struct S { + int x; +}; + +struct F { + int x; +}; + +TEST_CASE("14", "[issue.14]") { + auto res = tl::expected{tl::unexpect, F{}}; + + res.map_error([](F f) { + + }); +} diff --git a/tl/expected.hpp b/tl/expected.hpp index 2de373d..6c9da9f 100644 --- a/tl/expected.hpp +++ b/tl/expected.hpp @@ -1871,7 +1871,7 @@ auto map_impl(Exp &&exp, F &&f) -> expected> { !defined(TL_EXPECTED_GCC54) template (), - *std::declval())), + std::declval().error())), detail::enable_if_t::value> * = nullptr> constexpr auto map_error_impl(Exp &&exp, F &&f) { using result = expected, detail::decay_t>; @@ -1882,7 +1882,7 @@ constexpr auto map_error_impl(Exp &&exp, F &&f) { } template (), - *std::declval())), + std::declval().error())), detail::enable_if_t::value> * = nullptr> auto map_error_impl(Exp &&exp, F &&f) { using result = expected, monostate>; @@ -1896,7 +1896,7 @@ auto map_error_impl(Exp &&exp, F &&f) { #else template (), - *std::declval())), + std::declval().error())), detail::enable_if_t::value> * = nullptr> constexpr auto map_error_impl(Exp &&exp, F &&f) -> expected, detail::decay_t> { @@ -1910,7 +1910,7 @@ constexpr auto map_error_impl(Exp &&exp, F &&f) template (), - *std::declval())), + std::declval().error())), detail::enable_if_t::value> * = nullptr> auto map_error_impl(Exp &&exp, F &&f) -> expected, monostate> { using result = expected, monostate>;