傳遞引用函數如何區分傳遞值函數?例如:區分傳遞引用和傳遞值
template <typename T>
void sort(std::vector<T>& source); // Sorts source.
// Versus...
template <typename T>
std::vector<T> sort(std::vector<T> source); // Returns a sorted copy of source.
這兩個函數是不明確的;其中一個必須重新命名或完全刪除。
如何避免這種情況?一種形式是否應該優先於其他形式?或者是否有任何通用的命名指南來區分它們?
爲什麼這是一個需要解決的問題?由於它們不明確,編譯器不會允許它們共存,因此只要運行編譯器,問題就會持續下去,之後程序員將撤銷先前的更改。 – 2011-05-18 17:07:44
這是一個關於函數簽名的問題。如果第二個聲明通過'const'引用傳遞,則編譯器可以區分簽名。 – 2011-05-18 17:11:55
是否真的不可能在調用時區分OP問題中的兩個函數?如果是的話,如果沒有,如果C++編譯器提供了一個錯誤,即使函數沒有被調用,它也不會是稍微好一點的行爲嗎?我可以在沒有調用的情況下使用gcc 4.6.3進行編譯。 – 2013-01-08 17:34:46