57 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2// expected-no-diagnostics3 4// PR53115template<typename T>6class StringSwitch {7public:8 template<unsigned N>9 void Case(const char (&S)[N], const int & Value) {10 }11};12 13void test_stringswitch(int argc, char *argv[]) {14 (void)StringSwitch<int>();15}16 17namespace PR6986 {18 template<class Class,typename Type,Type Class::*> 19 struct non_const_member_base20 {21 };22 23 template<class Class,typename Type,Type Class::*PtrToMember> 24 struct member: non_const_member_base<Class,Type,PtrToMember>25 {26 };27 28 struct test_class29 {30 int int_member;31 };32 typedef member< test_class,const int,&test_class::int_member > ckey_m;33 void test()34 {35 ckey_m m;36 }37}38 39namespace rdar8980215 {40 enum E { E1, E2, E3 };41 42 template<typename T, E e = E2>43 struct X0 { 44 X0() {}45 template<typename U> X0(const X0<U, e> &);46 };47 48 template<typename T>49 struct X1 : X0<T> { 50 X1() {}51 template<typename U> X1(const X1<U> &x) : X0<T>(x) { }52 };53 54 X1<int> x1i;55 X1<float> x1f(x1i);56}57