typedef arg types in detail::projection