In essence, apply_wrap forms are nothing more than syntactic wrappers around
F::apply<A1,...An>::type / F::apply::type expressions (hence the name).
They provide a more concise notation and higher portability than their
underlaying constructs at the cost of an extra template instantiation.

If n>0, equivalent to typedeff::apply<a1,...an>::typet;,
otherwise equivalent to either typedeff::apply::typet; or
typedeff::apply<>::typet; depending on whether f::apply is
a class or a class template.