1*95566af7SMax Winkler // RUN: %clang_cc1 -std=c++20 -fms-compatibility -fms-compatibility-version=19.33 -emit-llvm %s -o - -triple=x86_64-windows-msvc | FileCheck %s 2*95566af7SMax Winkler 3*95566af7SMax Winkler template <typename T> 4*95566af7SMax Winkler concept C = requires 5*95566af7SMax Winkler { 6*95566af7SMax Winkler { T::test([](){}) }; 7*95566af7SMax Winkler }; 8*95566af7SMax Winkler 9*95566af7SMax Winkler template<typename T> 10*95566af7SMax Winkler struct Widget {}; 11*95566af7SMax Winkler 12*95566af7SMax Winkler template <C T> 13*95566af7SMax Winkler struct Widget<T> {}; 14*95566af7SMax Winkler 15*95566af7SMax Winkler struct Baz 16*95566af7SMax Winkler { 17*95566af7SMax Winkler template<typename F> 18*95566af7SMax Winkler static constexpr decltype(auto) test(F&&) {} 19*95566af7SMax Winkler }; 20*95566af7SMax Winkler 21*95566af7SMax Winkler void test() 22*95566af7SMax Winkler { 23*95566af7SMax Winkler Widget<Baz> w; 24*95566af7SMax Winkler } 25*95566af7SMax Winkler // CHECK: @"?test@@YAXXZ" 26