template <template <typename> class CallbackT,
typename Functor,
typename... Args>
decltype(auto) BindImpl(Functor&& functor, Args&&... args)
BindImpl is a template function, and is called like this:
return internal::BindImpl<OnceCallback>(std::forward<Functor>(functor),
std::forward<Args>(args)...);
as far as I know, template template paramaters are not allowed in a template function.
What kind of mechanism is used here?