Action!(Leaf!Ternary, process) a; Decorator!(Action!(Leaf!Ternary, process), Not) d1; Functor v; v = 0; auto res = a(v, 10); assert(v == 10); assert(res == Ternary.no); v = 0; res = d1(v, 10); assert(v == 10); assert(res == Ternary.yes); v = 50; res = a(v); assert(v == 500); assert(res == Ternary.unknown); v = 50; res = d1(v); assert(v == 500); assert(res == Ternary.unknown); v = 5; res = a(v, 10, 10, 10, 10, 10); assert(v == 55); assert(res == Ternary.yes); v = 5; res = d1(v, 10, 10, 10, 10, 10); assert(v == 55); assert(res == Ternary.no); Condition!(Leaf!bool) c; Decorator!(Condition!(Leaf!bool), Not) d2; v = 0; res = c(v, 10); assert(v == 10); assert(res == Ternary.no); v = 0; res = d2(v, 10); assert(v == 10); assert(res == Ternary.yes); v = 5; res = c(v, 10, 10, 10, 10, 10); assert(v == 55); assert(res == Ternary.yes); v = 5; res = d2(v, 10, 10, 10, 10, 10); assert(v == 55); assert(res == Ternary.no);
Decorator node. Reseives the child and its args for fine granular adjustments.