https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115343
Bug ID: 115343
Summary: Member name lookup does not consider equivalent type
aliases from different base classes to be equivalent.
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: email at miropalmu dot cc
Target Milestone: ---
In following code foo::tag and bar::tag are type aliases to the same type so
member name lookup in foobar::tag should merge them and not be ambiguous.
However GCC 15.0.0 20240604 gives error about ambiguity.
```https://godbolt.org/z/fsK7ET4bY
struct tag { };
struct foo {
using tag = tag;
};
struct bar {
using tag = tag;
};
struct foobar : foo, bar { };
int main() {
foobar::tag _;
}
```
Clang is able to compile the code and it would make sense to no be ambiguous
but I'm not 100% sure, so someone with more familiarity with
[class.member.lookup] section of the standard can correct me if I'm wrong.