Skip to content

Commit 6ea9ca0

Browse files
authored
Expected transform fix (#76, thanks @gogagum)
* Add test. * Fix.
1 parent 3296995 commit 6ea9ca0

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

include/nonstd/expected.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,11 +1240,11 @@ nsel_constexpr auto invoke( F && f, Args && ... args )
12401240
}
12411241

12421242
template< typename F, typename ... Args >
1243-
using invoke_result_nocvref_t = typename std20::remove_cvref< decltype( invoke( std::declval< F >(), std::declval< Args >()... ) ) >::type;
1243+
using invoke_result_nocvref_t = typename std20::remove_cvref< decltype( ::nonstd::expected_lite::detail::invoke( std::declval< F >(), std::declval< Args >()... ) ) >::type;
12441244

12451245
#if nsel_P2505R >= 5
12461246
template< typename F, typename ... Args >
1247-
using transform_invoke_result_t = typename std::remove_cv< decltype( invoke( std::declval< F >(), std::declval< Args >()... ) ) >::type;
1247+
using transform_invoke_result_t = typename std::remove_cv< decltype( ::nonstd::expected_lite::detail::invoke( std::declval< F >(), std::declval< Args >()... ) ) >::type;
12481248
#else
12491249
template< typename F, typename ... Args >
12501250
using transform_invoke_result_t = invoke_result_nocvref_t

test/expected.t.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,6 +1373,8 @@ CASE( "expected: Allows to transform value" " [monadic p2505r3]" )
13731373
EXPECT( ue.transform( mul2 ).error() == 42 );
13741374
}
13751375

1376+
expected<std::vector<int>, int>{std::vector<int>{}}.transform([](const std::vector<int>&) { });
1377+
13761378
#if nsel_P2505R >= 5
13771379
// R5 changed remove_cvref_t to remove_cv_t in transform/transform_error, which broke data member pointer transforms,
13781380
// because the result type must be a valid expected value type, but expressions with reference types are not.

0 commit comments

Comments
 (0)