Title
Omission of template in a typename-specifier
Status
c++17
Section
13.3 [temp.names]
Submitter
Daveed Vandevoorde

Created on 2013-11-18.00:00:00 last changed 83 months ago

Messages

Date: 2017-03-15.00:00:00

Proposed resolution (March, 2017):

This issue is resolved by the resolution of issue 1710.

Date: 2017-02-15.00:00:00

[Adopted at the February/March, 2017 meeting.]

According to 13.3 [temp.names] paragraph 4,

When the name of a member template specialization appears after . or -> in a postfix-expression or after a nested-name-specifier in a qualified-id, and the object expression of the postfix-expression is type-dependent or the nested-name-specifier in the qualified-id refers to a dependent type, but the name is not a member of the current instantiation (13.8.3.2 [temp.dep.type]), the member template name must be prefixed by the keyword template. Otherwise the name is assumed to name a non-template.

This does not seem necessary in a typename-specifier; a < following a qualified-id in a typename-specifier could safely be assumed to begin a template argument list, so the template keyword should be optional in this case. Some implementations already do not enforce this requirement.

See also issue 1710.

History
Date User Action Args
2018-02-27 00:00:00adminsetstatus: drafting -> c++17
2017-02-06 00:00:00adminsetstatus: review -> drafting
2014-11-24 00:00:00adminsetstatus: ready -> review
2014-03-03 00:00:00adminsetmessages: + msg4846
2014-03-03 00:00:00adminsetstatus: open -> ready
2013-11-18 00:00:00admincreate