DKLoehr wrote:

This is the smallest reproduction I could find:
```
struct BaseDelete1 {
  void operator delete[](void *);
};
struct BaseDelete2 {
  void operator delete[](void *);
};
struct BaseDestructor {
  virtual ~BaseDestructor() = default;
};
struct Final : BaseDelete1, BaseDelete2, BaseDestructor {};
```

When run with `clang++ repro.cc -fsyntax-only -std=c++20`, it yields the 
following error. Removing any one of the three base classes causes it to 
compile without problems.

```
repro.cc:10:8: error: member 'operator delete[]' found in multiple base classes 
of different types
   10 | struct Final : BaseDelete1, BaseDelete2, BaseDestructor {};
      |        ^
repro.cc:10:8: note: in implicit destructor for 'Final' first required here
repro.cc:2:8: note: member found by ambiguous name lookup
    2 |   void operator delete[](void *);
      |        ^
repro.cc:5:8: note: member found by ambiguous name lookup
    5 |   void operator delete[](void *);
      |        ^
```

https://github.com/llvm/llvm-project/pull/133950
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to