#include int produce(int a, int b) { return rand()%(a|b); } using namespace alsk; using namespace alsk::arg; constexpr auto add = edsl::link, P<1>), std::plus>(); constexpr auto mul = edsl::link, P<2>), std::multiplies>(); constexpr auto min = edsl::link>>(); constexpr auto prod = edsl::link), FN(produce)>(); using Skel = decltype(getSkeleton( edsl::link(int, int, int)>( add & edsl::link, P<1>)>(seq(3 * prod) ->* min) & mul ) )); int main() { auto task = alsk::implement(); std::printf("%d\n", task(10, 20, 5)); }