Functors/Composite: require less template arguments to be specified
Move template arguments from struct to operator() so that the compiler can deduce them by itself.
Move template arguments from struct to operator() so that the compiler can deduce them by itself.