Puntero único en la clase de inicialización

Supongamos que tengo ununique_ptr objeto miembro que quiero inicializar en clase, vea el código a continuación. ¿Por qué tengo que usar una inicialización uniforme (llaves)? La segunda declaración escupe un error, algo así como

so.cpp:10:31: error: expected parameter declarator
std::unique_ptr<Foo> upf2(new Foo);
                          ^
so.cpp:10:31: error: expected ')'
so.cpp:10:30: note: to match this '('
std::unique_ptr<Foo> upf2(new Foo);                             ^
2 errors generated. 

Y no creo que sea un problema de análisis más irritante, al menos no lo creo.

#include <memory>

class Foo
{

};

class Bar{
    std::unique_ptr<Foo> upf1{new Foo}; // works fine
//    std::unique_ptr<Foo> upf2(new Foo); // error here
};

int main() 
{
    Bar bar;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta