// { dg-do compile }
// { dg-options "-fabi-version=10" }

// Mangling of classes from std::decimal are special-cased.
// Derived from g++.dg/abi/mangle13.C.

namespace std {
  namespace decimal {
    class decimal64 {
      public:
	typedef float __decfloat64 __attribute__ ((mode (DD)));
	explicit decimal64 (float __r):__val (__r) {}
      private:
	__decfloat64 __val;
    };
  }
}

struct A {
  template <typename T> std::decimal::decimal64 f ();
  std::decimal::decimal64 operator+();
  operator std::decimal::decimal64 ();
  template <typename T>
  std::decimal::decimal64 operator-();
};

typedef std::decimal::decimal64 (A::*P)();

template <P> struct S {};

template <typename T> void g (S<&T::template f<std::decimal::decimal64> >) {}
template <typename T> void g (S<&T::operator+ >) {}
template <typename T> void g (S<&T::operator std::decimal::decimal64>) {}
template <typename T> void g (S<&T::template operator- <std::decimal::decimal64> >) {}

template void g<A> (S<&A::f<std::decimal::decimal64> >);
template void g<A> (S<&A::operator+>);
template void g<A> (S<&A::operator std::decimal::decimal64>);

// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_1fIDdEEE\[: \t\n\]" } }
// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_plEE\[: \t\n\]" } }
