[libcxx-commits] [clang] [libcxx] [Clang] Implement CWG2369 "Ordering between constraints and substitution" (PR #102857)

Erich Keane via libcxx-commits libcxx-commits at lists.llvm.org
Thu Jan 9 06:35:55 PST 2025


erichkeane wrote:

> > Is kinda wrong, it should be in the instantiation of that function...
> 
> @erichkeane I don’t quite understand: the CWG issue itself requires us to check the constraint before substituting into the function during template argument deduction. So it shouldn’t live in a specialization because we don’t really have one. This situation feels more like a chicken-and-egg problem.
> 
> GCC doesn’t encounter this issue because it doesn’t need to support the MSVC ABI. The problem only arises with the MSVC ABI because it requires parent mangling when instantiating the lambda body.

Actually, I perhaps misread the example (I think I inserted extra curleys there).  It isn't clear to me why we are mangling the name of the lambda.  It isn't in a context where it should be emitted?  Corentin might be right about the starting an unevaluated context.

It also isn't clear to me why compare_three_way_result_t is being instantiated with a lambda in it, but the example is one that perhaps needs more contemplating.


https://github.com/llvm/llvm-project/pull/102857


More information about the libcxx-commits mailing list