它看起來像吃了你的實際警告線。所有的gcc警告至少在其中一行中有「警告」一詞。
編輯一些建立的gcc
實際產生類似的消息(「注」行,行,行「從實例化」,「從要求」 ......但沒有實際的「錯誤」或「警告」行)。它看起來像gcc中有一個錯誤。 - 結束編輯。
在所有gcc警告中,我只知道一個與超載有關的警告,並且具有列出候選功能的「note」子消息。警告內容
C++說,這些都是不明確的,即使第一個最壞的轉換比最壞轉換爲第二
更好,它不能被關閉。如果你看到這樣的警告,你的程序是不合規的,你應該修復它。
下面是這種不符合規範的代碼示例。與函數簽名匹配你:
#include <string>
struct KeyWord
{
KeyWord(const std::string&);
operator std::string&() const;
};
struct A
{
bool operator() (const std::string&, const std::string&) const;
bool operator() (const KeyWord&, const KeyWord&);
};
int main()
{
A a;
std::string s;
const std::string r;
a(s, r);
}
使得第二operator()
const
解決了這個問題。
從命令行使用gcc。 Eclipse已經將編譯器的輸出變成了一個不可逾越的混亂。我什至不能發現它警告什麼。對我來說,這些消息看起來像gcc **錯誤**的碎片,而不是警告。 –
1)我從命令行得到完全相同的結果,2)沒有錯誤關鍵字,3)目標文件被構建並且可執行文件鏈接 – lalebarde
然後'make'裏面的東西必須過濾掉你的編譯器輸出。嘗試運行一個'g ++'命令而不使用'make'。請注意,也沒有'warning'關鍵字。 –