================
@@ -0,0 +1,25 @@
+// RUN: %clang_cc1 -std=c++20 -fms-compatibility 
-fms-compatibility-version=19.33 -emit-llvm %s -o - -triple=x86_64-windows-msvc 
| FileCheck %s
+
+template <typename T>
+concept C = requires
+{
+    { T::test([](){}) };
+};
+
+template<typename T>
+struct Widget {};
+
+template <C T>
+struct Widget<T> {};
+
+struct Baz
+{
+    template<typename F>
+    static constexpr decltype(auto) test(F&&) {}
+};
+
+void test()
+{
+    Widget<Baz> w;
+}
+// CHECK: @"?test@@YAXXZ"
----------------
MaxEW707 wrote:

> (If we wanted to, we could maybe encode this as a kind of linkage in 
> clang/include/clang/Basic/Linkage.h . It's sort of a variation of 
> UniqueExternal: we have an entity with external linkage, but there are 
> restrictions on which generated code can actually refer to it. And the 
> restriction propagates exactly the same way.)

That is a neat idea from looking at `Linkage.h` and how it is used.
I am going to merge this PR for now if that is ok to fix the regression and 
then look at this alternative for a future PR. That area of the codebase is 
still new to me so I am going to take a bit of time to spelunk and better 
understand it.

https://github.com/llvm/llvm-project/pull/117845
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to