https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116160
Bug ID: 116160
Summary: Rejects repeated using-declaration `using A::x;`
[namespace.udecl]
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: arthur.j.odwyer at gmail dot com
Target Milestone: ---
// https://godbolt.org/z/fG1ofMq65
namespace Blah { int b; }
int main() {
using Blah::b;
using Blah::b;
}
// https://godbolt.org/z/dbKfKG766
enum class Blah { b };
int main() {
using Blah::b;
using Blah::b;
}
In both cases, GCC complains:
<source>:7:15: error: redeclaration of 'int Blah::b'
7 | using Blah::b;
| ^
<source>:7:15: error: redeclaration of 'Blah Blah::b'
7 | using Blah::b;
| ^
But https://eel.is/c++draft/namespace.udecl#example-8 is very clear that the
former must be accepted; and I believe the latter also must be accepted.
(Clang+MSVC accept in both cases.) Redeclarations of using-declarations are OK.
This also affects GCC's handling of `using enum Blah`, as noticed by Sean
Baxter on the cpplang Slack:
using Blah::b;
using enum Blah; // GCC rejects, should accept