【发布时间】:2016-01-06 08:32:01
【问题描述】:
考虑以下程序:
struct Test
{
virtual void foo()=NULL;
};
int main()
{ }
g++ 4.8.1 给出如下预期错误:
[Error] invalid pure specifier (only '= 0' is allowed) before ';' token
Clang 给出以下错误:
error: initializer on function does not look like a pure-specifier
但是当我在 MSVS 2010 上尝试它时,它编译并运行良好。我认为 g++ & clang 在这种情况下是正确的。标准对此有何规定?我也使用 \Za 命令行选项禁用了编译器扩展,但 MSVS 仍然接受该代码。为什么它没有给出任何错误?
我还在 Online VC++ Compiler here 上尝试过,它最后一次更新是在 2015 年 7 月 8 日。这真的是 MSVS 2010 和 2015 中的错误吗?
【问题讨论】:
-
见Pure virtual functions in C++11 无效,好像是个bug。
-
@ShafikYaghmour:那么,有没有为此提交错误报告?
-
@PravasiMeet 我怀疑 VS2010 刚刚将
NULL定义为0。 -
@ShafikYaghmour:最好提交错误报告。
-
我犯了一个错误,这不是一个错误,但它不会跨平台保持一致,因为它取决于 NULL 的定义。
标签: c++ visual-studio-2010 syntax pure-virtual function-declaration