Gerade gestolpert, für die gleiche Frage. In meinem Fall verwende ich VS2010.
Es ist klar, dass VS2010 nie aktualisiert werden wird, um C++ 11 vollständig zu implementieren, verwenden Sie VS2015, wenn Sie eine bessere Einhaltung des Standards benötigen (was ich tue, wenn ich kann). Aber für einige (ältere) Projekte muss ich noch VS2010 verwenden.
Ein Ansatz, der in vielen Fällen (für mich) funktioniert, ist die Verwendung einer privaten Funktion mit allen gemeinsamen Initialisierungscode darin. Beispiel:
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 */
}
Es löst nicht alle Probleme ", und es verhindert nicht, dass alle Fälle von doppeltem Code, aber es geht einem langen Weg.
C++ 0x wird dies unterstützen, eigentlich – sellibitze