2016-11-25 10 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標準では、それを主張しています。

関連する問題