diff --git a/src/steam/engine/param-weaving-pattern.hpp b/src/steam/engine/param-weaving-pattern.hpp index a4d97b00f..5341d37e8 100644 --- a/src/steam/engine/param-weaving-pattern.hpp +++ b/src/steam/engine/param-weaving-pattern.hpp @@ -113,9 +113,11 @@ namespace engine { typename ChainCons::NewFrame buildParamDataBlock (TurnoutSystem& turnoutSys) { - auto invoke = [&](auto& fun) { return fun(turnoutSys); }; - ParamTup params = lib::meta::mapEach(functors_, invoke); - //////////////////////////////////////////////////////////////OOO now need to extract them + return std::apply ([&](auto&&... paramFun) + { // invoke parameter-functors and build NewFrame from results + return ChainCons::build (paramFun (turnoutSys) ...); + } + ,functors_); } diff --git a/tests/core/steam/engine/node-feed-test.cpp b/tests/core/steam/engine/node-feed-test.cpp index 6ef694440..0c964c1f2 100644 --- a/tests/core/steam/engine/node-feed-test.cpp +++ b/tests/core/steam/engine/node-feed-test.cpp @@ -131,6 +131,9 @@ SHOW_EXPR(v0) SHOW_EXPR(v1) auto paramBlock = spec.buildParamDataBlock (turnoutSys); +SHOW_EXPR(paramBlock) +SHOW_EXPR(paramBlock.get<0>()) +SHOW_EXPR(paramBlock.get<1>()) TODO ("implement a simple Builder for ParamAgent-Node"); TODO ("then use both together to demonstrate a param data feed here"); diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index b5a9ba876..bc9c9745a 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -94325,13 +94325,31 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - + + + + + + - + + + + + + +

+ also den gleichen Kniff, auf dem auch lib::meta::forEach und lib::meta::mapEach beruhen: man wendet per std::apply ein generisches variadisches Lambda auf die Tupel-Elemente an +

+ +
+
+ + + +