Я тестировал два компилятора и был удивлен, увидев, что обе версии поддерживают следующее определение:
class A {
A();
};
A::A::A() {}
^^^
Обратите внимание, что это также удается для методов, хотя оно помечено, когда объявление переопределено.
Вопросы:
- Является ли это действительной программой на С++?
- Если да, то какая цель это служит - или это просто побочный продукт?
Обновленная информация:
Если исходный вопрос был неясным или слишком коротким: мне любопытно, почему избыточные квалификации разрешены в определении (выделение также добавлено выше).
Clang Apple GCC 4.2 + LLVM были компиляторами