Appena inciampato, per la stessa domanda. Nel mio caso sto usando VS2010.
È chiaro che VS2010 non verrà mai aggiornato per implementare completamente C++ 11, utilizzare VS2015 se è necessario un migliore rispetto dello standard (cosa che faccio quando posso). Ma per alcuni progetti (legacy) devo ancora usare VS2010.
Un approccio che funziona in molti casi (per me) è l'uso di una funzione privata con tutti i codici di inizializzazione condivisi in esso. Esempio:
class A
{
private:
void Inidialise() { /* common initialisation here */ }
public:
A() { Initialise(); /* specific initialisation for A() here */ }
A(bool a) { Initialise(); /* specific initialisation for A(bool) here */ }
A(int b) { Initialise(); /* specific initialisation for A(int) here */ }
/* etcetera */
}
Essa non risolve tutti i problemi '' e non impedisce tutti i casi di codice duplicato, ma va un lungo cammino.
C++ 0x supporterà questo, in realtà – sellibitze