tuple/value: fix various compile time errors
This commit is contained in:
parent
d096eb9d21
commit
ceda32b912
@ -250,24 +250,31 @@ namespace cruft::tuple::value {
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
namespace detail {
|
||||
template <typename FunctionT, typename TupleT, size_t ...Index>
|
||||
requires (
|
||||
std::is_convertible_v<
|
||||
std::tuple_element_t<Index, TupleT>,
|
||||
std::common_type<
|
||||
std::tuple_element_t<Index, TupleT>...
|
||||
>
|
||||
> && ...
|
||||
)
|
||||
// requires (
|
||||
// std::is_convertible_v<
|
||||
// std::tuple_element_t<Index, TupleT>,
|
||||
// std::common_type<
|
||||
// std::tuple_element_t<Index, TupleT>...
|
||||
// >
|
||||
// > && ...
|
||||
// )
|
||||
auto
|
||||
transform_array (index::indices<Index...>, FunctionT &&func, TupleT &&val)
|
||||
transform_array (std::index_sequence<Index...>, FunctionT &&func, TupleT &&val)
|
||||
{
|
||||
using value_type = std::common_type<
|
||||
std::tuple_element_t<Index, TupleT>...
|
||||
using value_type = std::common_type_t<
|
||||
std::invoke_result_t<
|
||||
FunctionT,
|
||||
std::tuple_element_t<Index, std::remove_cvref_t<TupleT>>
|
||||
>...
|
||||
>;
|
||||
|
||||
return std::array<value_type, std::tuple_size_v<TupleT>> (
|
||||
std::invoke (func, std::get<Index> (val))...
|
||||
);
|
||||
constexpr auto arity = std::tuple_size_v<
|
||||
std::remove_cvref_t<TupleT>
|
||||
>;
|
||||
|
||||
return std::array<value_type, arity> { {
|
||||
value_type (std::invoke (func, std::get<Index> (val)))...
|
||||
} };
|
||||
}
|
||||
}
|
||||
|
||||
@ -281,9 +288,14 @@ namespace cruft::tuple::value {
|
||||
auto
|
||||
transform_array (FunctionT &&func, TupleT &&val)
|
||||
{
|
||||
return transform_array (
|
||||
return detail::transform_array (
|
||||
std::make_index_sequence<
|
||||
std::tuple_size_v<
|
||||
std::remove_cvref_t<TupleT>
|
||||
>
|
||||
> {},
|
||||
std::forward<FunctionT> (func),
|
||||
std::forward<TupleT> (val)
|
||||
std::forward<TupleT > (val )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user