t3nsor wrote:

> However it led to recursive concept checking.

Note that you don't need recursive concept checking to see the bug. You could 
also use a concept that causes an error not in the immediate context when you 
check it. For example
```
template <class... T>
concept C = [] {
  static_assert(sizeof...(T) > 1);
  return true;
}();

struct Deferred {
  friend void foo(Deferred) {}
  template <C TO> operator TO();
};

void bar(Deferred d) {
  foo(d);
}
```


https://github.com/llvm/llvm-project/pull/185936
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to