// { dg-do assemble  }
// GROUPS passed overloading
class CLogger			// { dg-message "candidate" }
{
public:
      void operator() (int,const char *) {}; // { dg-message "note" }
      void operator() (int,const char *, ...) {}; // { dg-message "note" }
} Log;

class CGLogger : public CLogger	// { dg-message "candidate" }
{
} GLog;

int main()
{
        Log(1,"Test");// { dg-error "ambiguous" }
        Log(1,"Test %d",3);
        GLog(1,"Test");// { dg-error "ambiguous" }
        GLog(1,"Test %d",3);
}
