struct B { void inherited(); }; void sink(int value); void ambiguous(int value); void ambiguous(double value); void helper(); namespace tools { void namespaceHelper(); } using tools::namespaceHelper; template void logMany(int, Ts... xs) { (sink(xs), ...); } template void foldAmbiguous(Ts... xs) { (ambiguous(xs), ...); } template struct Mix : B... { void run() { inherited(); helper(); namespaceHelper(); } }; template struct Current { void own(); void run() { own(); } }; template struct UnknownSpecialization { typename T::value_type value; void run() { value.use(); } }; void callVariadic() { logMany(1, 2, 3); }