You can wrap more :
template <template <typename...> class Tmpl> struct variwrap { template <typename> struct Dummy { template <typename ...Brgs> struct rebind { typedef Tmpl<Brgs...> other; }; }; };
Now you can say call_me<variwrap<more>::Dummy> , and the consumer can use F::rebind<Args...>::other to restore more<Args...> . Of course, call_me does not know that F has a rebind member, so you need to add specialization.
Ugh.
source share