2016-11-25 61 views
2

为什么在下面的代码编译器不是抱怨,因为歧义?可变形式与单变量的非变量形式暧昧

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 
} 
+1

@VittorioRomeo他问为什么不抱怨,他的代码编译成功 – Danh

回答

4

这是因为重载解析总是有利于非可变参数函数形式而不是可变参数函数形式。

C++ 11标准坚持认为。