111
|
1 // PR c++/69850
|
|
2 // { dg-do compile }
|
|
3 // { dg-options "-Wnonnull-compare" }
|
|
4
|
|
5 struct D {
|
|
6 virtual ~D ();
|
|
7 void foo () const { delete this; } // { dg-bogus "nonnull argument" }
|
|
8 template <typename> friend struct A;
|
|
9 };
|
|
10 template <typename T> struct A {
|
|
11 static void bar (T *x) { x->foo (); }
|
|
12 };
|
|
13 template <typename T> struct B {
|
|
14 T b;
|
|
15 void baz () { A<T>::bar (&b); }
|
|
16 };
|
|
17 class C {
|
|
18 class E : public D { ~E (); };
|
|
19 void baz ();
|
|
20 B<E> c;
|
|
21 };
|
|
22
|
|
23 void
|
|
24 C::baz ()
|
|
25 {
|
|
26 c.baz ();
|
|
27 }
|