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

Hans Wennborg via libcxx-commits libcxx-commits at lists.llvm.org
Wed Jan 8 06:50:43 PST 2025


zmodem wrote:

Here's what I got from creduce:

```
$ cat /tmp/a.ii
template <class, class _Up>
using compare_three_way_result_t = _Up ::type;

struct __sfinae_assign_base {};

template <class _Tp>
concept __is_derived_from_optional =
    requires(_Tp __t) { []<class _Up>(_Up) {}(__t); };

template <class _Tp, class _Up>
  requires(__is_derived_from_optional<_Up>)
compare_three_way_result_t<_Tp, _Up> operator<=>(_Tp, _Up);

struct RuntimeModeArgs {
  auto operator<=>(const RuntimeModeArgs &) const = default;
  __sfinae_assign_base needs_admin;
};

$ build/bin/clang.bad -cc1 -triple x86_64-pc-windows-msvc19.34.0 -emit-obj -fms-extensions -fms-compatibility -std=c++20 -w /tmp/a.ii
/tmp/a.ii:12:1: error: cannot mangle this dependent name type yet
   12 | compare_three_way_result_t<_Tp, _Up> operator<=>(_Tp, _Up);
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
```

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


More information about the libcxx-commits mailing list