http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750
--- Comment #9 from Alexander Monakov <amonakov at gcc dot gnu.org> --- My statement about zero-initialization was inaccurate (thanks), but the general point still stands: in C you have to write ' = {0}' since empty-braces initializer is not supported by the language (you get a warning with -pedantic); in C++, you can write ' = {}' or 'T foo = T();', but you don't need to write ' = {0}' specifically.