1 // PR c++/69850 2 // { dg-do compile } 3 // { dg-options "-Wnonnull-compare" } 4 5 struct D { 6 virtual ~D (); fooD7 void foo () const { delete this; } // { dg-bogus "nonnull argument" } 8 template <typename> friend struct A; 9 }; 10 template <typename T> struct A { barA11 static void bar (T *x) { x->foo (); } 12 }; 13 template <typename T> struct B { 14 T b; bazB15 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 baz()24C::baz () 25 { 26 c.baz (); 27 } 28