Почему избыточные квалификации области поддерживаются компилятором, и это законно?

Я протестировал на двух компиляторах, и был удивлен, увидев, что оба поддерживают следующееdefinition без жалоб:

class A {
  A();
};

A::A::A() {}
   ^^^

Обратите внимание, что это также успешно выполняется для методов, хотя оно помечается, когда объявление переопределено.

Вопросы:

Is this a valid C++ program? If so, what purpose does it serve - or is it merely a byproduct?

Updated Detail:

В случае, если первоначальный вопрос был неясным или слишком коротким: мне любопытно, почему избыточные квалификации допускаются наdefinition (акцент также добавлен выше).

Clang an Apple's GCC 4.2 + LLVM were the compilers

Ответы на вопрос(1)

Ваш ответ на вопрос