Class template specialization priority/ambiguity
问题 While trying to implement a few things relying on variadic templates, I stumbled accross something I cannot explain. I boiled down the problem to the following code snippet: template <typename ... Args> struct A {}; template <template <typename...> class Z, typename T> struct test; template <template <typename...> class Z, typename T> struct test<Z, Z<T>> { static void foo() { std::cout << "I'm more specialized than the variadic spec, hehe!" << std::endl; } }; template <template <typename...>