char配列の宣言時に

char buf[3] {};

としているコードを見ました。

自分の中では

char buf[3] = {0};

などだと思うのですが、実行結果を見てみるとどちらの方法もゼロで3バイト分埋まっています。

c++的に正しいコードなんでしょうか?
コンパイラはgcc 4.4.7です。