diff options
author | Daniel M. Katz <katzdm@gmail.com> | 2024-08-12 13:11:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-12 13:11:21 -0400 |
commit | c4724f60384917ef0f0e8cc32702fe02c3b3b1c9 (patch) | |
tree | 02dbd705f3a7decc4b248af575851b6cb074dcc7 /clang/lib/CodeGen/CodeGenFunction.cpp | |
parent | 1cbd25f882d10de1a23bb0287a70cde5037ebf42 (diff) | |
download | llvm-c4724f60384917ef0f0e8cc32702fe02c3b3b1c9.zip llvm-c4724f60384917ef0f0e8cc32702fe02c3b3b1c9.tar.gz llvm-c4724f60384917ef0f0e8cc32702fe02c3b3b1c9.tar.bz2 |
Fix assertion failure during conversion function overload resolution. (#98671)
When clang is built with assertions, an otherwise silent (and seemingly
innocuous) assertion failure from `SemaConcept.cpp` is triggered by the
following program:
```cpp
struct S {
operator int();
template <typename T> operator T();
};
constexpr auto r = &S::operator int;
```
The function in question compares the "constrained-ness" of `S::operator
int` and `S::operator T<int>`; the template kind of the former is
`TK_NonTemplate`, whereas the template kind of the later is
`TK_FunctionTemplateSpecialization`. The later kind is not "expected" by
the function, thus the assertion-failure.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
0 files changed, 0 insertions, 0 deletions