// { dg-do compile } // { dg-options "-Wconversion-null" } #include class Foo { public: template static void Compare(const T1& expected, const T2& actual) { } template static void Compare(const T1& expected, T2* actual) { } }; template class Foo2 { public: Foo2(int x); template void Bar(T2 y); }; template void func(T3 x) { } typedef Foo2 MyFooType; void func1(long int a) { MyFooType *foo2 = new MyFooType(NULL); // { dg-warning "passing NULL to" } foo2->Bar(a); func(NULL); func(NULL); // { dg-warning "passing NULL to" } func(NULL); } int x = 1; main() { int *p = &x; Foo::Compare(0, *p); Foo::Compare(NULL, p); // { dg-warning "passing NULL to" } Foo::Compare(NULL, p); func1(NULL); // { dg-warning "passing NULL to" } }