2 // { dg-do compile { target c++11 } }
3 // { dg-options "-O2 -fcompare-debug" }
5 struct A { A(const char *, const int & = 0); };
6 template <typename> struct B;
7 template <typename> struct C {
9 void m_fn1() { __atomic_fetch_add(&_M_i, 0, __ATOMIC_RELAXED); }
16 template <> struct B<int> : C<int> {};
19 void m_fn2() { RefCount.m_fn1(); }
23 G(const G &p1) : Obj(p1.Obj) {
36 template <typename ResultT, typename ArgT> struct J {
38 ResultT operator()(ArgT) { return ResultT(); }
47 L(int) : Implementation(Implementation) {}
54 N(int, L &p2) : Param2(p2) {}
60 L ignoringImpCasts(L);
63 M hasOverloadedOperatorName(D);
72 void Q::m_fn5(P *p1) {
75 L e = 0, f = ignoringImpCasts(e);
76 b(ignoringImpCasts(f)).m_fn3();
78 hasOverloadedOperatorName(0);