https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115343
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note the original example is invalid code to begin.
```
<source>:5:11: warning: declaration of 'using foo::tag = struct tag' changes
meaning of 'tag' [-Wchanges-meaning]
5 | using tag = tag;
| ^~~
<source>:5:17: note: used here to mean 'struct tag'
5 | using tag = tag;
| ^~~
<source>:2:8: note: declared here
2 | struct tag { };
| ^~~
```
But a simple change to the source:
```
struct tag { };
struct foo {
using tag1 = tag;
};
struct bar {
using tag1 = tag;
};
struct foobar : foo, bar { };
int main() {
foobar::tag1 _;
}
```
Gets the questionable ambiguous error message without a warning.