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.

Reply via email to