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.