1 #ifndef SCALAR_TRANSFORMER_H 2 #define SCALAR_TRANSFORMER_H 12 template <
typename ScalarOp,
typename TransformerSignature,
typename Traits_ = Traits::useDefaults>
14 template <
typename ScalarOp,
typename Out,
typename... In,
typename Traits_>
19 const ScalarOp&
scalarOp()
const {
return static_cast<const ScalarOp&
>( *this ); }
29 out.reserve( inrange.size() );
30 auto& scalar = scalarOp();
31 for (
const auto&& tuple : inrange ) {
42 template <
typename ScalarOp,
typename TransformerSignature,
typename Traits_ = Traits::useDefaults>
44 template <
typename ScalarOp,
typename... Out,
typename... In,
typename Traits_>
50 const ScalarOp&
scalarOp()
const {
return static_cast<const ScalarOp&
>( *this ); }
61 [sz = inrange.size()](
auto&&... o ) {
62 #if __cplusplus < 201703L 65 ( o.reserve( sz ), ... );
69 auto& scalar = scalarOp();
70 for (
const auto&& tuple : inrange ) {
72 [&scalar, &tuple](
auto&... out ) {
78 [&out...](
auto&&... data ) {
79 #if __cplusplus < 201703L
80 (void)std::initializer_list<int>{
81 ( details::insert( out, std::forward<decltype( data )>( data ) ), 0 )...};
constexpr struct Gaudi::Functional::details::insert_t insert
class MergingTransformer< Out(const vector_of_const_< In > void
decltype(auto) constexpr apply(F &&f, Tuple &&t) noexcept(noexcept( detail::apply_impl(std::forward< F >(f), std::forward< Tuple >(t), std::make_index_sequence< std::tuple_size< std::remove_reference_t< Tuple >>::value >{})))
constexpr struct Gaudi::Functional::details::deref_t deref
constexpr void applyPostProcessing(const Fun &, Container &, Args...)
struct[[deprecated("use MergingTransformer instead")]] Traits_
decltype(auto) const_range(Args &&...args)
Zips multiple containers together to form a single const range.
Helper functions to set/get the application return code.