Sintaxe da lista de inicializadores na lista de inicializadores de membros usando C ++ 11
Eu tenho passado por 'Um tour pelo C ++'e Bjarne usa o recurso de lista de inicializadores do c ++ 11 na inicialização de membros em um construtor, da seguinte forma (usando colchetes):
A a;
B b;
Foo(Bar bar):
a{bar.a}, b{bar.b}
{}
Isso, no entanto, não é compilado antes do c ++ 11. Qual é a diferença com a lista de inicializadores de membros antigos (usando colchetes):
Foo(Bar bar):
a(bar.a), b(bar.b)
{}
Então, qual é a diferença e quando um deve ser preferido em relação ao outro?