【发布时间】:2015-12-19 07:32:52
【问题描述】:
以下代码编译良好,没有任何警告(默认选项为 g++)。在这种情况下,我们可以使用一个标志来要求 g++ 发出警告吗?
void foo(bool v) {
}
void bar() {
foo("test");
}
【问题讨论】:
-
如果 将原始字符串文字作为参数 是唯一可以添加
void foo(const char*) = delete;重载的问题 -
@PaoloM "警告:命令行选项 '-Wimplicit' 对 C/ObjC 有效,但对 C++ 无效"
-
@JoachimPileborg 实际上,g++(4.9.33,cygwin)似乎在重载之前考虑了已删除的
foo(const void *)。我必须查一下才能确定,但我想这是重载解决的顺序,并且删除的函数参与其中。 -
反过来
template<typename T> void foo(T) = delete;会捕获任何不是bool cv {,&,&&}的东西。 -
@davmac 尽管名字很可爱,
-Wall并不能打开一切。例如。有-Wextra,还有更多。
标签: c++ c++11 gcc implicit-conversion gcc-warning