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