void outputString(const string &ss) {
cout << "outputString(const string&) " + ss << endl;
}
void outputString(const string ss) {
cout << "outputString(const string) " + ss << endl;
}
int main(void) {
//! outputString("ambigiousmethod");
const string constStr = "ambigiousmethod2";
//! outputString(constStr);
} ///:~
如何使不同的電話嗎?如何在C++中進行不明確的調用?
編輯:這段代碼可以用g ++和MSVC編譯。
謝謝。
by「is not allowed」,你的意思是「不編譯」?如果是這樣的話,gcc版本4.6.3允許我編譯這個,並且如果我試圖調用int i = 1,那麼只會產生編譯模糊性錯誤。 FOO(ⅰ);''。看來OP也能夠編譯。所以我們的編譯器不會實現標準的C++,或者這個答案是錯誤的。我對OP有同樣的問題:如果無法區分呼叫,爲什麼它會被編譯?或者他們可以嗎?如果不是,即使沒有呼叫,給出錯誤也不是稍微好一點的行爲嗎? – 2013-01-08 17:31:49