Title
Clause 22 template parameter requirements
Status
cd1
Section
[localization]
Submitter
Beman Dawes

Created on 2005-01-10.00:00:00 last changed 164 months ago

Messages

Date: 2010-10-21.18:28:33

Rationale:

Again, a blanket clause isn't blanket enough. Also, we've got a couple of names that we don't have blanket requirement statements for. The only issue is what to do about stateT. This wording is thin, but probably adequate.

Date: 2010-10-21.18:28:33

Proposed resolution:

Change [type.descriptions], paragraph 1, from:

The Requirements subclauses may describe names that are used to specify constraints on template arguments.153) These names are used in clauses 20, 23, 25, and 26 to describe the types that may be supplied as arguments by a C++ program when instantiating template components from the library.

to:

The Requirements subclauses may describe names that are used to specify constraints on template arguments.153) These names are used in library clauses to describe the types that may be supplied as arguments by a C++ program when instantiating template components from the library.

In the front matter of class 22, locales, add:

Template parameter types internT and externT shall meet the requirements of charT (described in [strings]).

Date: 2005-01-10.00:00:00

It appears that there are no requirements specified for many of the template parameters in clause 22. It looks like this issue has never come up, except perhaps for Facet.

Clause 22 isn't even listed in 17.3.2.1 [lib.type.descriptions], either, which is the wording that allows requirements on template parameters to be identified by name.

So one issue is that 17.3.2.1 [lib.type.descriptions] Should be changed to cover clause 22. A better change, which will cover us in the future, would be to say that it applies to all the library clauses. Then if a template gets added to any library clause we are covered.

charT, InputIterator, and other names with requirements defined elsewhere are fine, assuming the 17.3.2.1 [lib.type.descriptions] fix. But there are a few template arguments names which I don't think have requirements given elsewhere:

  • internT and externT. The fix is to add wording saying that internT and externT must meet the same requirements as template arguments named charT.
  • stateT. I'm not sure about this one. There already is some wording, but it seems a bit vague.
  • Intl. [lib.locale.moneypunct.byname] The fix for this one is to rename "Intl" to "International". The name is important because other text identifies the requirements for the name International but not for Intl.
History
Date User Action Args
2010-10-21 18:28:33adminsetmessages: + msg2844
2010-10-21 18:28:33adminsetmessages: + msg2843
2005-01-10 00:00:00admincreate