Can a braced initializer be used for non-type template argument in C++? [duplicate]

I'd say GCC is wrong.

The grammar for template-argument in [temp.names] says that a template argument must either be a constant-expression, a type-id or an id-expression.

{} is neither an expression, nor a type, nor an (un)qualified name.