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?

questionAnswers(3)

yourAnswerToTheQuestion