C++ g++;4.8.5编译c++;14用c+静默编码+;11模式
令我惊讶的是,以下程序编译得很好:C++ g++;4.8.5编译c++;14用c+静默编码+;11模式,c++,c++11,g++,C++,C++11,G++,令我惊讶的是,以下程序编译得很好: int main() { int i = 4; [j = i]{}(); } > g++ --std=c++11 ext.cpp > 问题是我想让它失败:广义Lambda捕获是C++14的一个特性,我当前的项目需要C++11 现在,Clang也编译了一个警告,我可以使用-Werror=c++14扩展名将其升级为一个错误。但是,我找不到类似的g++标志。我可以使用-pedantic错误或-Werror=pedantic,但这些
int main()
{
int i = 4;
[j = i]{}();
}
> g++ --std=c++11 ext.cpp
>
问题是我想让它失败:广义Lambda捕获是C++14的一个特性,我当前的项目需要C++11
现在,Clang也编译了一个警告,我可以使用-Werror=c++14扩展名将其升级为一个错误。但是,我找不到类似的g++标志。我可以使用-pedantic错误或-Werror=pedantic,但这些错误会带来很多麻烦
我是否忽略了此编译器的某些编译器选项?这似乎在4.9.0中有所更改:
有什么问题?迂腐的错误
?据我所知,唯一的“包袱”是它迫使你遵守你指定的标准版本,这正是你想要的,不是吗?@KazDragon,看起来这个警告仍然被归类为-pedantic
,尽管不再需要切换,所以-pedantic errors
将成为一个错误。“我怀疑有没有办法挑出这种类型的警告。@Galik这是一个很大的代码库。更改为-pedantic错误还需要编辑许多其他文件,包括我们正在使用的第三方标题。例如,这也将标记为以;性格有些人会这么做,令人烦恼。@KazDragon这就是我认为-学究式错误
应该是编译器的默认值的原因,如果我们想使用非标准扩展,我们应该只需要指定一个标志。但我们到了……:)这似乎在4.9.0中有所改变:有什么问题-学究式错误
?据我所知,唯一的“包袱”是它迫使你遵守你指定的标准版本,这正是你想要的,不是吗?@KazDragon,看起来这个警告仍然被归类为-pedantic
,尽管不再需要切换,所以-pedantic errors
将成为一个错误。“我怀疑有没有办法挑出这种类型的警告。@Galik这是一个很大的代码库。更改为-pedantic错误还需要编辑许多其他文件,包括我们正在使用的第三方标题。例如,这也将标记为以;性格有些人会这么做,令人烦恼。@KazDragon这就是我认为-学究式错误
应该是编译器的默认值的原因,如果我们想使用非标准扩展,我们应该只需要指定一个标志。但我们到了……:)