template<class F> void bind(F f) {}
template<class F> void bindm(F f) {}
template<class F, class T> void bindm(F (T::*f)(void)) {}
template<class F> void bindn(F f) {}
template<class F, class T> void bindn(F (*f)(T)) {}
template<class F> void bindb(F f) {}
template<class F, class T> void bindb(F (*f)(T)) {} template<class F, class T> void bindb(F (T::*f)(void)) {}
struct foo {
static int baist;
int bait;
void barf ();
static void barf (int);
struct bar {
static int baikst;
int baikt;
void bark ();
static void bark (int);
bar() {
bind (&baist);
bind (&foo::baist);
bind (&bait); bind (&foo::bait);
bind (&baikst);
bind (&bar::baikst);
bind (&baikt); bind (&bar::baikt);
bind (&barf); bind (&foo::barf);
bindm (&barf); bindm (&foo::barf);
bindn (&barf);
bindn (&foo::barf);
bindb (&barf);
bindb (&foo::barf);
bind (&bark); bind (&bar::bark);
bindm (&bark); bindm (&bar::bark);
bindn (&bark);
bindn (&bar::bark);
bindb (&bark);
bindb (&bar::bark); }
};
template <typename T>
struct barT {
static int baikst;
int baikt;
void bark ();
static void bark (int);
barT() {
bind (&baist);
bind (&foo::baist);
bind (&bait); bind (&foo::bait);
bind (&baikst);
bind (&barT::baikst);
bind (&baikt); bind (&barT::baikt);
bind (&barf); bind (&foo::barf);
bindm (&barf); bindm (&foo::barf);
bindn (&barf);
bindn (&foo::barf);
bindb (&barf);
bindb (&foo::barf);
bind (&bark); bind (&barT::bark);
bindm (&bark); bindm (&barT::bark);
bindn (&bark);
bindn (&barT::bark);
bindb (&bark);
bindb (&barT::bark); }
};
bar bard;
barT<void> bart;
} bad;