The behavior that you describe seems like a bug, when I compare it to the following excerpt from the manual:
> Whether a symbol that is declared in a template is exposed to the > instantiation scope is controlled by the inject and gensym pragmas: gensym'ed > symbols are not exposed but inject'ed are. > > The default for symbols of entity type, var, let and const is gensym and for > proc, iterator, converter, template, macro is inject. However, if the name of > the entity is passed as a template parameter, it is an inject'ed symbol
