OSDN Git Service

PR c++/4926
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / abi / mangle37.C
1 // Testcase for mangling of expressions involving operator names.
2 // { dg-options -std=c++0x }
3 // { dg-final { scan-assembler "_Z1fI1AEDTclonplfp_fp_EET_" } }
4 // { dg-final { scan-assembler "_Z1gI1AEDTclonplIT_Efp_fp_EES1_" } }
5 // { dg-final { scan-assembler "_Z1hI1AEDTcldtfp_miEET_" } }
6 // { dg-final { scan-assembler "_Z1iI1AEDTcldtfp_srT_miEES1_" } }
7 // { dg-final { scan-assembler "_Z1jI1AEDTcldtfp_cvPT_EES1_" } }
8
9 struct A {
10   void operator-();
11   template <class T>
12   operator T();
13 };
14 template <class T>
15 T operator+(T,T);
16
17 template <class T>
18 auto f (T t) -> decltype(operator+(t,t));
19 template <class T>
20 auto g (T t) -> decltype(operator+<T>(t,t));
21 template <class T>
22 auto h (T t) -> decltype(t.operator-());
23 template <class T>
24 auto i (T t) -> decltype(t.T::operator-());
25 template <class T>
26 auto j (T t) -> decltype(t.operator T*());
27
28 int main()
29 {
30   f(A());
31   g(A());
32   h(A());
33   i(A());
34   j(A());
35 }