a0(a1) is not necessarily of type `meta::call<tag::function_(A0&, A1&)>::type` because the operator() overload is in nt2::container::expression. Therefore one must use typename A0::nt2_expression instead to deduce the type correctly. Renamed various parent typedefs to nt2_expression to make this work.