它看起来像吃了你的实际警告线。所有的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'关键字。 –