// { dg-do assemble  }
struct S
{
  void f(int);
  void f(double);
};

void g(int);
void g(double);

template <int* IP>
void foo();			// { dg-message "note" }
template <long l>
void foo();			// { dg-message "note" }

void bar()
{
  foo<S::f>(); // { dg-error "" } no matching function
  // { dg-message "candidate" "candidate note" { target *-*-* } 18 }
  foo<g>();    // { dg-error "" } no matching function
  // { dg-message "candidate" "candidate note" { target *-*-* } 20 }
  
}