diff options
author | Matheus Izvekov <mizvekov@gmail.com> | 2024-09-07 15:49:07 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-07 15:49:07 -0300 |
commit | fa6580470547411667b866362941db0b02e25578 (patch) | |
tree | d50acac928e9d82bd1a72378eb28f97058386df0 /lldb/source/Commands/CommandObjectProcess.cpp | |
parent | a0c43be0e912bca178cec3f00b9f9f7388e9dbef (diff) | |
download | llvm-fa6580470547411667b866362941db0b02e25578.zip llvm-fa6580470547411667b866362941db0b02e25578.tar.gz llvm-fa6580470547411667b866362941db0b02e25578.tar.bz2 |
[clang] Implement CWG2398 provisional TTP matching to class templates (#94981)
This extends default argument deduction to cover class templates as
well, applying only to partial ordering, adding to the provisional
wording introduced in https://github.com/llvm/llvm-project/pull/89807.
This solves some ambuguity introduced in P0522 regarding how template
template parameters are partially ordered, and should reduce the
negative impact of enabling `-frelaxed-template-template-args` by
default.
Given the following example:
```C++
template <class T1, class T2 = float> struct A;
template <class T3> struct B;
template <template <class T4> class TT1, class T5> struct B<TT1<T5>>; // #1
template <class T6, class T7> struct B<A<T6, T7>>; // #2
template struct B<A<int>>;
```
Prior to P0522, `#2` was picked. Afterwards, this became ambiguous. This
patch restores the pre-P0522 behavior, `#2` is picked again.
Diffstat (limited to 'lldb/source/Commands/CommandObjectProcess.cpp')
0 files changed, 0 insertions, 0 deletions