Can I use template aliases as template template parameters?
template <template <typename...> class> struct foo {};
template <typename T> using simple_ptr = std::unique_ptr<T>;
foo<std::unique_ptr> a; // this doesn't work, std::unique_ptr has two parameters
foo<simple_ptr> b; // does this work?
Yes, it is apparently allowed. According to the latest draft of the upcoming standard I could find, it is stated that
A template-argument for a template template-parameter shall be the name of a class template or an alias template [...].
However, alias templates seems very seldomly supported at the moment, so you might have some trouble making it work with most compilers.