Sintaxis de la lista de inicializadores en la lista de inicializadores de miembros usando C ++ 11
He estado pasando por 'Un recorrido por C ++'y Bjarne usa la función de lista de inicializadores de c ++ 11 en la inicialización de miembros en un constructor, de esta manera (usando llaves):
A a;
B b;
Foo(Bar bar):
a{bar.a}, b{bar.b}
{}
Esto, sin embargo, no se compila antes de c ++ 11. ¿Cuál es la diferencia con la lista de inicializadores de miembros antiguos (usando corchetes):
Foo(Bar bar):
a(bar.a), b(bar.b)
{}
Entonces, ¿cuál es la diferencia y cuándo se debe preferir uno sobre el otro?