xref: /llvm-project/clang/test/CodeGenCXX/ms-uneval-context-crash.cpp (revision 95566af789d208b8fc422644ab282a43911041f2)
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