考虑这样一个简单的例子:
namespace foo {
struct Foo {};
struct Boo {
void f(Foo);
};
}
using foo::Boo;
void Boo::f(Foo)
{
}
clang
和gcc
编译此类代码时没有错误(-pedantic
-std=c++11
),
但VC++-2015
报告了Foo
- void Boo::f(Foo)
下方标识符中Foo
类型的错误。如果像这样重写代码:void Boo::f(foo::Foo)
它编译得很好,但是在重写之后它还编译了有趣的内容:
namespace foo {
struct Foo {};
struct Boo {
void f(Foo);
};
}
void foo::Boo::f(Foo)
{
}
根据VC++2015
标准,它是c++11
错误吗?
答案 0 :(得分:3)
不,这不是MSVC错误。您应该正确地命名您的标识符。