// Testcase for mangling of expressions involving operator names. // { dg-do compile { target c++11 } } // { dg-final { scan-assembler "_Z1fI1AEDTclonplfp_fp_EET_" } } // { dg-final { scan-assembler "_Z1gI1AEDTclonplIT_Efp_fp_EES1_" } } // { dg-final { scan-assembler "_Z1hI1AEDTcldtfp_miEET_" } } // { dg-final { scan-assembler "_Z1iI1AEDTcldtfp_srT_miEES1_" } } // { dg-final { scan-assembler "_Z1jI1AEDTcldtfp_cvPT_EES1_" } } struct A { void operator-(); template operator T(); }; template T operator+(T,T); template auto f (T t) -> decltype(operator+(t,t)); template auto g (T t) -> decltype(operator+(t,t)); template auto h (T t) -> decltype(t.operator-()); template auto i (T t) -> decltype(t.T::operator-()); template auto j (T t) -> decltype(t.operator T*()); int main() { f(A()); g(A()); h(A()); i(A()); j(A()); }