不寻常的范围解析运算符

Sma*_*acL 3 c++ scope visual-studio-2010

在今天重构一些C++代码的过程中,我得到了一些可归结为以下内容的代码

class x
{
  public:
    void x::y();
};
Run Code Online (Sandbox Code Playgroud)

x::范围解析运算符是否在此处执行任何操作,是一个错误,还是其他内容.我最好的猜测是,它是一些自动完成遗留下来的人工制品,但我很想知道我是否遗漏了任何东西.正在使用的编译器是VS2010 SP1.

Mik*_*our 13

这是一个错误,大多数编译器都会拒绝它.例如,GCC说

prog.cpp:4:10: error: extra qualification ‘x::’ on member ‘y’ [-fpermissive]
     void x::y();
          ^
Run Code Online (Sandbox Code Playgroud)

C++ 11 8.3/1不允许使用冗余限定符:

除了在其类之外的成员函数或静态数据成员的定义,在其命名空间之外的命名空间的函数或变量成员的定义或显式实例化,或者显式的定义之外,declarator-id 不应被限定在其命名空间之外的特化,或者是另一个类或命名空间的成员的友元函数的声明.

没有适用于其类中的成员声明的异常.