Initializer-Listensyntax in der Member-Initializer-Liste unter Verwendung von C ++ 11
Ich habe durchgemacht 'Eine Tour durch C ++ 'und Bjarne verwenden die c ++ 11-Initialisierungslistenfunktion bei der Elementinitialisierung in einem Konstruktor wie folgt (mit geschweiften Klammern):
A a;
B b;
Foo(Bar bar):
a{bar.a}, b{bar.b}
{}
Dies wird jedoch nicht vor c ++ 11 kompiliert. Was ist der Unterschied zur alten Elementinitialisierungsliste (mit runden Klammern):
Foo(Bar bar):
a(bar.a), b(bar.b)
{}
So was ist der Unterschied und wann sollte man den anderen vorziehen?