[clang] [MS][clang] Make sure vector deleting dtor calls correct operator delete (PR #133950)
Devon Loehr via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 8 12:51:16 PDT 2025
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
More information about the cfe-commits
mailing list