2016-11-25 109 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標準堅持認爲。