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?