1*30adb9fdSZhouyi Zhou // RUN: %clang_cc1 -verify %s 2*30adb9fdSZhouyi Zhou // RUN: %clang_cc1 -std=c++11 -verify %s 3*30adb9fdSZhouyi Zhou // RUN: %clang_cc1 -std=c++17 -verify %s 4*30adb9fdSZhouyi Zhou // RUN: %clang_cc1 -std=c++1z -verify %s 5*30adb9fdSZhouyi Zhou #if __cplusplus >= 201703 6*30adb9fdSZhouyi Zhou // expected-no-diagnostics 7*30adb9fdSZhouyi Zhou #endif 8*30adb9fdSZhouyi Zhou class A { 9*30adb9fdSZhouyi Zhou public: 10*30adb9fdSZhouyi Zhou static const char X; 11*30adb9fdSZhouyi Zhou }; 12*30adb9fdSZhouyi Zhou const char A::X = 0; 13*30adb9fdSZhouyi Zhou 14*30adb9fdSZhouyi Zhou template<typename U> void func() noexcept(U::X); 15*30adb9fdSZhouyi Zhou 16*30adb9fdSZhouyi Zhou template<class... B, char x> 17*30adb9fdSZhouyi Zhou #if __cplusplus >= 201703 foo(void (B...)noexcept (x))18*30adb9fdSZhouyi Zhouvoid foo(void(B...) noexcept(x)) {} 19*30adb9fdSZhouyi Zhou #else 20*30adb9fdSZhouyi Zhou void foo(void(B...) noexcept(x)) {} // expected-note{{candidate template ignored}} 21*30adb9fdSZhouyi Zhou #endif 22*30adb9fdSZhouyi Zhou bar()23*30adb9fdSZhouyi Zhouvoid bar() 24*30adb9fdSZhouyi Zhou { 25*30adb9fdSZhouyi Zhou #if __cplusplus >= 201703 26*30adb9fdSZhouyi Zhou foo(func<A>); 27*30adb9fdSZhouyi Zhou #else 28*30adb9fdSZhouyi Zhou foo(func<A>); // expected-error{{no matching function for call}} 29*30adb9fdSZhouyi Zhou #endif 30*30adb9fdSZhouyi Zhou } 31*30adb9fdSZhouyi Zhou 32*30adb9fdSZhouyi Zhou 33