variadic形式对单个参数的非variadic形式是模棱两可的

variadic form is ambiguous with the nonvariadic form for a single argument

本文关键字:variadic 模棱两可 单个 参数      更新时间:2023-10-16

为什么在以下代码编译器中不因为歧义而抱怨?

template <typename T>
void print (const T& arg)
{
std::cout << arg << std::endl;
}
template <typename T, typename... Types>
void print (const T& firstArg, const Types&... args)
{
std::cout << firstArg << std::endl;    // print first argument
print(args...);                       // call print() for remaining arguments
}

这是因为超负荷分辨率始终偏爱非variadic函数的形式,而不是variadic。

C 11标准坚持。