https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121367
Bug ID: 121367 Summary: Clang and GCC diverge on acceptance of function declaration inside constructor body Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jirehguo at tju dot edu.cn Target Milestone: --- Repro: https://godbolt.org/z/4Tev5x6os GCC rejects it with: <source>: In constructor 'S2::S2()': <source>:7:5: error: return type specification for constructor invalid 7 | S2(S2()); | ^~ <source>:7:12: error: 'S2' declared in a non-class scope 7 | S2(S2()); | ^ Compiler returned: 1 However, Clang, EDG and MSVC all accept it. Is one compiler incorrect or not? Thank you for your time and insight! Code: ----------------------------- class S2 { int a; public: S2(S2 &s2) : a(s2.a) {} S2() : a(0) { S2(S2()); } }; int main() { S2 s; }