18 template <
typename ScalarOp,
typename TransformerSignature,
typename Traits_ = Traits::useDefaults>
20 template <
typename ScalarOp,
typename Out,
typename... In,
typename Traits_>
24 const ScalarOp&
scalarOp()
const {
return static_cast<const ScalarOp&
>( *this ); }
33 out.reserve( inrange.size() );
34 auto& scalar = scalarOp();
35 for (
const auto&& tuple : inrange ) {
39 std::apply( [&](
const auto&... i ) {
return scalar(
details::deref( i )... ); }, tuple ) );
47 template <
typename ScalarOp,
typename TransformerSignature,
typename Traits_ = Traits::useDefaults>
49 template <
typename ScalarOp,
typename... Out,
typename... In,
typename Traits_>
54 const ScalarOp&
scalarOp()
const {
return static_cast<const ScalarOp&
>( *this ); }
63 std::apply( [sz = inrange.size()](
auto&&... o ) { ( o.reserve( sz ), ... ); },
out );
64 auto& scalar = scalarOp();
65 for (
const auto&& indata : inrange ) {
67 [&scalar, &indata](
auto&...
out ) {
72 [&
out...](
auto&& outdata ) {
73 GF_SUPPRESS_SPURIOUS_CLANG_WARNING_BEGIN
75 [&out...]( auto&&... outdata1 ) {
76 ( details::insert( out, std::forward<decltype( outdata1 )>( outdata1 ) ), ... );