Proposed resolution (June, 2009):
Change 6.1 [basic.pre] paragraph 4 as follows:
A name is a use of an identifier (5.11 [lex.name]), operator-function-id (12.4 [over.oper]), literal-operator-id (12.6 [over.literal]), conversion-function-id (11.4.8.3 [class.conv.fct]), or template-id (13.3 [temp.names]) that denotes an entity or label (8.7.6 [stmt.goto], 8.2 [stmt.label]).
Change _N4567_.5.1.1 [expr.prim.general] paragraph 3 as follows:
The operator :: followed by an identifier, a qualified-id,oran operator-function-id, or a literal-operator-id is a primary-expression. Its type is specified by the declaration of the identifier, qualified-id,oroperator-function-id, or literal-operator-id. The result is the entity denoted by the identifier, qualified-id,oroperator-function-id, or literal-operator-id. The result is an lvalue if the entity is a function or variable. The identifier, qualified-id,oroperator-function-id, or literal-operator-id shall have global namespace scope or be visible in global scope because of a using-directive (9.9.4 [namespace.udir])...
Add the following production to the grammar for qualified-id in _N4567_.5.1.1 [expr.prim.general] paragraph 7:
Add the following production to the grammar for template-id in 13.3 [temp.names] paragraph 1:
Change 13.3 [temp.names] paragraph 3 as follows:
After name lookup (6.5 [basic.lookup]) finds that a name is a template-name, or that an operator-function-id or a literal-operator-id refers to a set of overloaded functions any member of which is a function template...
Change 13.6 [temp.type] bullet 1.1 as follows:
their template-names, or
operator-function-ids, or literal-operator-ids
refer to the same template, and