The class Compose_shared<F0,F1,F2,F3> is used to specify the type of a
composed functor, i.e., the functor that results from composing
functors of type F1, F2, and F3, into a functor of
type F0. The arguments F2 and F3 are optional,
such that between two and four functors can participate in the
composition. The class is used in conjunction with the
compose_shared function; see there for an explanation on how
exactly the functors are combined.
This class encapsulates the differences in
implementation of the composers across various platforms. But in any
case, Type refers to a model of AdaptableFunctor.