Quelle macro sono strettamente legate all'implementazione, quindi se aggiorni il compilatore non hai garanzie che rimangano.
La cosa curiosa è che quello che chiedi esiste già nel C++0x (C++11?) con il nome di: packaged_task (che hanno un paio di funzionalià in più da non sottovalutare).
Purtroppo VC++2010 non fornisce un'implementazione, quindi tocca arrangiarsi e in mancanza dei variadic_template previsti dal nuovo standard (ancora non supportati da VC++2010), l'unica cosa da fare è scriversi le varie specializzazioni (fino a 10 argomenti).
Vari suggerimenti su come fare li puoi trovare qui:
http://www.contezero.net/sites/conte...parte-seconda/

Una volta capita la tecnica, il resto è un lavoro semplice ma noiso.

C'è un'altra possibilità, comunque, che però si discosta da quello che chiedi ed è di rendere Fire una funzione void pura, effettuando il binding degli argomenti nel costruttore (o altra funzione) e memorizzare il binding nel vector. Lo svantaggio è che non puoi passare parametri a Fire, il vantaggio è che puoi memorizzare ogni tipo di funzione per poi invocarla come se fosse una funzione void().