1 // { dg-do compile { target c++11 } }
2 // { dg-options "-fabi-version=0 -fabi-compat-version=0 -Wabi=2" }
4 template<typename T, int (*cmp)(T, T)> struct A { };
6 template<typename T> static int cmp1(T a, T b);
7 static int cmp2(char a, char b);
8 // { dg-final { scan-assembler "_ZN1B1fIcEEvR1AIT_X4cmp1EE" } }
9 template <typename T> static void f (A<T,cmp1> &) {}
10 // { dg-final { scan-assembler "_ZN1B1gIcEEvR1AIT_XsrS_4cmp1EE" } }
11 template <typename T> static void g (A<T,B::cmp1> &) {}
12 // { dg-final { scan-assembler "_ZN1B1fIcEEvR1AIT_L_ZNS_4cmp2EccEE" } }
13 template <typename T> static void f (A<T,cmp2> &) {} // { dg-warning "mangle" }
14 // { dg-final { scan-assembler "_ZN1B1gIcEEvR1AIT_L_ZNS_4cmp2EccEE" } }
15 template <typename T> static void g (A<T,B::cmp2> &) {} // { dg-warning "mangle" }