In C, you can initialize single values with scalar types like so
1 2 3
int x = { 5 };
//same as
int x = 5;
Apparently this is not the case in C++, as you noticed. I'm not exactly sure why they allow it in C, possibly to support using {0} as a generic initializer.