为什么编译器支持多余的范围限定条件,这是合法的吗?

我在两个编译器上进行了testing,并且很惊讶地发现两者都支持以下定义而没有投诉:

class A { A(); }; A::A::A() {} ^^^ 

请注意,这也成功的方法,虽然它被标记时,声明是过分合格的。

问题:

  • 这是一个有效的C ++程序吗?
  • 如果是的话,它的目的是什么?还是仅仅是一个副产品?

更新详情:

如果原始问题不清楚或太短:我很好奇为什么在定义上允许多余的资格(重点还在上面加了)。


编译苹果公司的GCC 4.2 + LLVM