Dlaczego kompilator obsługuje kwalifikacje nadmiarowego zakresu i czy jest to legalne?

Przetestowałem na dwóch kompilatorach i byłem zaskoczony, widząc, że oba obsługują następującedefinicja bez skargi:

class A {
  A();
};

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

Zauważ, że to się również udaje dla metod, chociaż jest oflagowane, gdy deklaracja jest nadkwalifikowana.

Pytania:

Czy to jest poprawny program C ++?Jeśli tak, to w jakim celu służy - czy jest to tylko produkt uboczny?

Zaktualizowany szczegół:

W przypadku, gdy oryginalne pytanie nie było jasne lub zbyt krótkie: ciekawi mnie, dlaczego nadmiarowe kwalifikacje są dozwolonedefinicja (podkreślenie dodano również powyżej).

Clang an Apple GCC 4.2 + LLVM były kompilatorami

questionAnswers(1)

yourAnswerToTheQuestion