summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/warn/Wnonnull-compare-2.C
blob: 641bb6738df19ba3e724e0cb70736606788e870d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// PR c++/69850
// { dg-do compile }
// { dg-options "-Wnonnull-compare" }

struct D {
  virtual ~D ();
  void foo () const { delete this; }	// { dg-bogus "nonnull argument" }
  template <typename> friend struct A;
};
template <typename T> struct A {
  static void bar (T *x) { x->foo (); }
};
template <typename T> struct B {
  T b;
  void baz () { A<T>::bar (&b); }
};
class C {
  class E : public D { ~E (); };
  void baz ();
  B<E> c;
};

void
C::baz ()
{
  c.baz ();
}