xref: /llvm-project/clang/test/SemaTemplate/class-template-noexcept.cpp (revision 9cfb138eccb83b5876928b08be346fde5ca78b47)
130adb9fdSZhouyi Zhou // RUN: %clang_cc1 -verify %s
230adb9fdSZhouyi Zhou // RUN: %clang_cc1 -std=c++11 -verify %s
330adb9fdSZhouyi Zhou // RUN: %clang_cc1 -std=c++17 -verify %s
430adb9fdSZhouyi Zhou // RUN: %clang_cc1 -std=c++1z -verify %s
5*9cfb138eSKrystian Stasiowski 
630adb9fdSZhouyi Zhou class A {
730adb9fdSZhouyi Zhou public:
830adb9fdSZhouyi Zhou   static const char X;
930adb9fdSZhouyi Zhou };
1030adb9fdSZhouyi Zhou const char A::X = 0;
1130adb9fdSZhouyi Zhou 
1230adb9fdSZhouyi Zhou template<typename U> void func() noexcept(U::X);
1330adb9fdSZhouyi Zhou 
1430adb9fdSZhouyi Zhou template<class... B, char x>
foo(void (B...)noexcept (x))1530adb9fdSZhouyi Zhou void foo(void(B...) noexcept(x)) {} // expected-note{{candidate template ignored}}
1630adb9fdSZhouyi Zhou 
bar()1730adb9fdSZhouyi Zhou void bar()
1830adb9fdSZhouyi Zhou {
1930adb9fdSZhouyi Zhou   foo(func<A>);	// expected-error{{no matching function for call}}
2030adb9fdSZhouyi Zhou }
21