Support fmap over a tuple

This commit is contained in:
Nikita Lisitsa 2023-06-06 13:21:30 +03:00
parent 48a85dfd66
commit e4fcf82f70

View file

@ -3,6 +3,7 @@
#include <psemek/util/range.hpp>
#include <optional>
#include <tuple>
namespace psemek::util
{
@ -25,6 +26,16 @@ namespace psemek::util
else
return std::optional<R>();
}
template <typename ... Ts>
auto operator()(std::tuple<Ts...> && x)
{
return [&]<std::size_t ... I>(std::index_sequence<I...>){
return std::tuple{
f(std::get<I>(x))...
};
}(std::make_index_sequence<sizeof...(Ts)>{});
}
};
}