Почему избыточные квалификации области поддерживаются компилятором, и это законно?
Я протестировал на двух компиляторах, и был удивлен, увидев, что оба поддерживают следующее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