https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119182
Bug ID: 119182 Summary: Compiler Fails to Diagnose Redefinition of Type Alias in Lambda Scope Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: qurong at ios dot ac.cn Target Milestone: --- The compiler silently accepts code that redefines a type alias (`using`) within the same lambda scope, while Clang correctly issues a warning. This violates C++17 §10.1.3, which prohibits redefining type aliases in the same scope and requires a diagnostic. **Steps to Reproduce**: 1. Save the following code as `test.cpp`: ```cpp template <typename T> struct Test { int f() { int x = 0; [x = x, &r = x] { using ty1 = int; // First definition using ty1 = decltype(x); // Redefinition (invalid) }; return 0; } }; int main() { Test<int> obj; obj.f(); return 0; } ``` 2. Compile with GCC: g++ -std=c++17 test.cpp Expected Result: A diagnostic (error/warning) about the redefinition of ty1. Actual Result: GCC compile the code without any errors or warnings. Environment: Compiler: GCC 13.2.0 Flags: -std=c++17 Proposal: Reject the code or emit a diagnostic for redefined type aliases in the same scope, as required by the standard. Additional Notes: Standard Reference: C++17 §10.1.3: "A type-name introduced by a using declaration shall be unique in the declarative region in which it appears." Clang Behavior: Correctly warns with warning: redefinition of type alias 'ty1'. Compiler Explorer link: https://godbolt.org/z/xEMrnbrW4