Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Editorial changes to N2461

9 views
Skip to first unread message

Jerry Coffin

unread,
Nov 5, 2007, 12:59:41 PM11/5/07
to
Hi all (but mostly Pete):

I did a bit of proofreading on N2461 and came up with a number of
editorial changes. Most of them are minor changes in wording, changing
"must" to "shall" in a number of places, adding cross-references in
others, and so on.

***[new.delete.single]/12, [new.delete.array]/11

Change: "the value of ptr shall be null..."
To: "the value of ptr shall be a null pointer..."

Rationale: "null pointer" has a defined meaning.

***[pairs]/14

Change: "first_type and second_type must be Swappable." To: "first_type
and second_type shall be Swappable. (37)"

***[tuple.cnstr]/3

Change: "Each type in Types shall be copy constructible."

To: "Each type in Types shall satisfy the requirements of
CopyConstructible. (34)"

***[tuple.cnstr]/5

Change: "Each type in Types shall be move constructible from the
corresponding type in UTypes. sizeof...(Types) == sizeof...(UTypes)."

To: "Each type in Types shall satisfy the requirements of
MoveConstructible (table 33) from the corresponding type in UTypes.
sizeof...(Types) == sizeof...(UTypes)."

***[tuple.cnstr]/7

Change: "Each type in Types shall be copy constructible."

To: "Each type in Types shall satisfy the requirements of
CopyConstructible. (34)."

***[tuple.cnstr]/9

Change: "Each type in Types shall be move constructible."

To: "Each type in Types shall satisfy the requirements of
MoveConstructible. (table 33)."

***[tuple.cnstr]/14

Change: "Each type in Types shall be move-constructible from the
corresponding type in UTypes. sizeof...(Types) == sizeof...(UTypes)."

To: "Each type in Types shall satisfy the requirements of
MoveConstructible (table 33) from the corresponding type in UTypes.
sizeof...(Types) == sizeof...(UTypes)."

***[tuple.cnstr]/16

Change: "The first type in Types shall be constructible from U1 and the
second type in Types shall be constructible from U2."

To: "The first type in Types shall satisfy the requirements of
CopyConstructible (34) from U1 and the second type in Types shall
satisfy the requirements of CopyConstructible (34) from U2."

***[tuple.cnstr]/18

Change: "The first type in Types shall be move constructible from U1 and
the second type in Types shall be move-constructible from U2. sizeof...
(Types) == 2."

To: "The first type in Types shall satisfy the requirements of
MoveConstructible (table 33) from U1 and the second type in Types shall
satisfy the requirements of MoveConstructible (table 33) from U2."

***[tuple.cnstr]/20

Change: "Each type in Types shall be assignable."
To: "Each type in Types shall be Assignable. (23.1)"

***[tuple.cnstr]/23

Change: "Each type in Types shall be move-assignable."

To: "Each type in Types shall satisfy the requirements of
MoveAssignable. (table 35)."

***[tuple.cnstr]/26

Change: "Each type in Types shall be assignable from the corresponding
type in UTypes."

To: "Each type in Types shall be Assignable (23.1) from the
corresponding type in UTypes."

***[tuple.cnstr]/29

Change: "Each type in Types shall be move-assignable from the
corresponding type in UTypes. sizeof...(Types) == sizeof...(UTypes)."

To: "Each type in Types shall satisfy the requirements of MoveAssignable
(table 35) from the corresponding type in UTypes. sizeof...(Types) ==
sizeof...(UTypes)."

***[tuple.cnstr]/32

Change: "The first type in Types shall be move assignable from U1 and
the second type in Types shall be move assignable from U2. sizeof...
(Types) == 2."

To :" The first type in Types shall satisfy the requirements of
MoveAssignable (table 35) from U1 and the second type in Types shall be
satisfy the requirements of MoveAssignable (table 35) from U2. sizeof...
(Types) == 2."

***[tuple.cnstr]/36

Change: "The first type in Types shall be assignable from U1 and the
second type in Types shall be assignable from U2. sizeof...(Types) ==
2."

To: "The first type in Types shall be Assignable (23.1) from U1 and the
second type in Types shall be Assignable (23.1) from U2. sizeof...
(Types) == 2."

***[tuple.creation]/6

Change: "All the types in TTypes shall be CopyConstructible. All the
types in UTypes shall be CopyConstructible."

To: "All the types in TTypes shall be CopyConstructible (34). All the
types in UTypes shall be CopyConstructible (34)."

***[tuple.creation]/8

Change: "All the types in TTypes shall be MoveConstructible. All the
types in UTypes shall be CopyConstructible."

To: "All the types in TTypes shall be MoveConstructible (table 35). All
the types in UTypes shall be CopyConstructible (table 36)."

***[tuple.creation]/10

Change: "All the types in TTypes shall be CopyConstructible. All the
types in UTypes shall be MoveConstructible."

To: "All the types in TTypes shall be CopyConstructible (34). All the
types in UTypes shall be MoveConstructible (table 33)."

***[tuple.creation]/12

Change: "All the types in TTypes shall be MoveConstructible. All the
types in UTypes shall be MoveConstructible."

To: "All the types in TTypes shall be MoveConstructible (table 33). All
the types in UTypes shall be MoveConstructible (table 33)."

***[propagation]/9

change: "p shall not be null"
To: "p shall not be a null pointer"
Rationale: consistency with similar specifications (e.g.
set_unexpected/2, set_terminate/2)

***[unique.ptr.single.modifiers]/7

change: "The deleter D is Swappable and will not throw an exception
under swap."
To: "The deleter D shall be Swappable and shall not throw
an exception under swap."

[locale.messages.virtuals]/4, /6

Change: "Requires:" clause to read: "cat shall be a catalog obtained
from open() and not yet closed."

***[list.ops]/29

change: "defines" to "shall define".

[bitset.members]/49, /52

change: "is"
To: "shall be"

***[iterator.operations]/2

Change to read: "n shall be negative only for bidirectional and random
access iterators."

***[ostreambuf.iter.cons]/1

Change "is"
To "shall"

***[ostreambuf.iter.cons]/3

Change: 's is not null"
To: "s shall not be a null pointer."

Rationale: "shall" has a defined meaning and "null pointer" has a
defined meaning.

***[alg.search]/4

Change: "The type Size is convertible to integral type"

To: "The type Size shall be convertible to an integral type."

***[alg.generate]/2

Change: "gen takes no arguments, Size is convertible to an integral
type"
To: "gen shall take no arguments, Size shall be convertible to an
integral type"

***[alg.rotate]/4

Change: "[first,middle) and [middle,last) are valid ranges."
To: "[first,middle) and [middle,last) shall be valid ranges."

Rationale: "Shall" has a defined meaning.

***[lower.bound]/1

Change: "The elements e of [first,last) are partitioned with respect to
the expression e < value or comp(e, value)."

To: "The elements e of [first,last) shall be partitioned with respect to
the expression e < value or comp(e, value)."


***[upper.bound]/1

Change: "The elements e of [first,last) are partitioned with respect to
the expression !(value < e) or !comp(value, e)."

To: "The elements e of [first,last) shall be partitioned with respect to
the expression !(value < e) or !comp(value, e)."


***[equal.range]/1, [binary.search]/1

Change: "The elements e of [first,last) are partitioned with respect to
the expressions e < value and !(value < e) or comp(e, value) and !comp
(value, e). Also, for all elements e of [first, last), e < value implies
!(value < e) or comp(e, value) implies !comp(value, e)."

To: "The elements e of [first,last) shall be partitioned with respect to
the expressions e < value and !(value < e) or comp(e, value) and !comp
(value, e). Also, for all elements e of [first, last), e < value implies
!(value < e) or comp(e, value) shall imply !comp(value, e)."

Rationale: "Shall" has a defined meaning

***[complex.ops]/13

Change: "The input values be convertible to T."
To: "The input values shall be convertible to T."
Rationale: "Shall" has a defined meaning.

***[strembuf.virt.get]/15

Change: "may"
to: "shall"
Rationale: "Shall" has a defined meaning

***[ostream.inserters.character]/3

Change: "s is non-null"

To: "s shall not be a null pointer"

Rationale: "null pointer" has a defined meaning, "shall" has a defined
meaning.

***[re.regex.assign]/9

Change: "The type InputIterator corresponds to the Input Iterator
requirements"

To: "The type InputIterator shall satisfy the requirement
of an Input Iterator [24.1.1]"

Rationale: "shall" has a defined meaning, citation added.

***[re.results.form]/1

Change: "The type OutputIter conforms to the Output Iterator
requirements [24.1.2]."

To: "The type OutputIter shall satisfy the requirements of an Output
Iterator [24.1.2]."

Rationale: "Shall" has a defined meaning, consistency with other such
requirements.

***[auto.pointer.cons]/4, /10

Change: "Y* can be implicitly converted to X*."
To: "Y* shall be implicitly convertible to X*." Rationale: "Shall" has a
defined meaning.

***[lex.string]/13

Change: "any universal-character-names must be"
To: "any universal-character-names shall be"

***[basic.def.odr]/4

Change: "A class type T must be complete if:"
To: "A class type T shall be complete if:"

***[basic.lookup.classref]/1:3

Change: "if the name found is a class template, it must refer to the
same entity as the one found in the class of the object expression,
otherwise the program is ill-formed."

To: "if the name found is a class template, it shall refer to the same
entity as the one found in the class of the object expression, otherwise
the program is ill-formed."

***[decl.fct.default]/4

Change: "If a friend declaration specifies a default argument
expression, that declaration must be a definition and shall be the only
declaration of the function or function template in the translation
unit."

To: "If a friend declaration specifies a default argument expression,
that declaration shall be a definition and shall be the only declaration
of the function or function template in the translation unit."

***[class.temporary]/1

Change: "Even when the creation of the temporary object is avoided
(12.8), all the semantic restrictions must be respected as if the
temporary object had been created."

To: "Even when the creation of the temporary object is avoided (12.8),
all the semantic restrictions shall be respected as if the temporary
object had been created."

***[over.ics.user]/3

Change: "If the user-defined conversion is specified by a specialization
of a conversion function template, the second standard conversion
sequence must have exact match rank."

To: "If the user-defined conversion is specified by a specialization of
a conversion function template, the second standard conversion sequence
shall have exact match rank."

***[temp]/7

Change: "In addition, the first declaration of an exported template
containing the export keyword must not follow the definition of that
template."

To: "In addition, the first declaration of an exported template
containing the export keyword shall not follow the definition of that
template."

***[temp]/9

Change: "A non-exported non-class template must be defined in every
translation unit in which it is implicitly instantiated (14.7.1), unless
the corresponding specialization is explicitly instantiated (14.7.2) in
some translation unit; no diagnostic is required."

To: "A non-exported non-class template shall be defined in every
translation unit in which it is implicitly instantiated (14.7.1), unless
the corresponding specialization is explicitly instantiated (14.7.2) in
some translation unit; no diagnostic is required."

***[temp.param]/11

Change: "If a template-parameter of a class template is a template
parameter pack, it must be the last template-parameter."

To: "If a template-parameter of a class template is a template parameter
pack, it shall be the last template-parameter."

***[temp.arg.nontype]/5:3

Change: "The templateparameter is bound directly to the template-
argument, which must be an lvalue."

To: "The templateparameter is bound directly to the template-argument,
which shall be an lvalue."

***[temp.class.spec]/2

Change: "When a partial specialization is used within the instantiation
of an exported template, and the unspecialized template name is non-
dependent in the exported template, a declaration of the partial
specialization must be declared before the definition of the exported
template, in the translation unit containing that definition."

To: "When a partial specialization is used within the instantiation of
an exported template, and the unspecialized template name is non-
dependent in the exported template, a declaration of the partial
specialization shall be declared before the definition of the exported
template, in the translation unit containing that definition."

***[temp.class.spec.match]/4

Change: In a type name that refers to a class template specialization,
(e.g., A<int, int, 1>) the argument list must match the template
parameter list of the primary template."

To: "In a type name that refers to a class template specialization,
(e.g., A<int, int, 1>) the argument list shall match the template
parameter list of the primary template."


***[temp.deduct]/1

Change: "When a function template specialization is referenced, all of
the template arguments must have values."

To: "When a function template specialization is referenced, all of the
template arguments shall have values."

***[unique.ptr.single]/1

Change: "A client-supplied template argument D must be a function
pointer or functor for which, given a value d of type D and a pointer
ptr of type T*, the expression d(ptr) is valid and has the effect of
deallocating the pointer as appropriate for that deleter."

To: "A client-supplied template argument D shall be a function pointer
or functor for which, given a value d of type D and a pointer ptr of
type T*, the expression d(ptr) is valid and has the effect of
deallocating the pointer as appropriate for that deleter."

***[unique.ptr.single.ctor]/1

Change: "D must be default constructible, and that construction must not
throw an exception. D must not be a reference type."

To: "D shall be default constructible, and that construction shall not
throw an exception. D shall not be a reference type."

***[unique.ptr.single.ctor]/5

Change: "The expression D()(p) must be well formed. The default
constructor of D must not throw an exception. D must not be a reference
type."

To: "The expression D()(p) shall be well formed. The default constructor
of D shall not throw an exception. D shall not be a reference type."

***[unique.ptr.single.ctor]/12

Change: "The expression d(p) must be well formed."
To: "The expression d(p) shall be well formed."

***[unique.ptr.single.ctor]/13:1

Change: "If d is an lvalue or const rvalue then the first constructor of
this pair will be selected. D must be Copy-Constructible, and this
unique_ptr will hold a copy of d. The copy constructor of D must not
throw an exception."

To: "If d is an lvalue or const rvalue then the first constructor of
this pair will be selected. D shall satisfy the requirements of
CopyConstructible (34), and this unique_ptr will hold a copy of d. The
copy constructor of D shall not throw an exception."

Rationale: added reference

***[unique.ptr.single.ctor]/13:2

Change: "Otherwise d is a non-const rvalue and the second constructor of
this pair will be selected. D need only be MoveConstructible, and this
unique_ptr will hold a value move constructed from d. The move
constructor of D must not throw an exception."

To: "Otherwise d is a non-const rvalue and the second constructor of
this pair will be selected. D shall satisfy the requirements of
MoveConstructible (table 33), and this unique_ptr will hold a value move
constructed from d. The move constructor of D shall not throw an
exception."

***[unique.ptr.single.ctor]/14

Change: "That constructor must subsequently emit a diagnostic." To:
"That constructor shall emit a diagnostic." Rationale: There's not
really anything here for it to be subsequent to...

***[unique.ptr.single.ctor]/17

Change: "If the deleter is not a reference type, construction of the
deleter D from an rvalue D must not throw an exception."

To: "If the deleter is not a reference type, construction of the deleter
D from an rvalue D shall not throw an exception."

***[unique.ptr.single.ctor]/21

Change: "If D is not a reference type, construction of the deleter D
from an rvalue of type E must be well formed and not throw an exception.
If D is a reference type, then E must be the same type as D (diagnostic
required). U* must be implicitly convertible to T*.

To: "If D is not a reference type, construction of the deleter D from an
rvalue of type E shall be well formed and shall not throw an exception.
If D is a reference type, then E shall be the same type as D (diagnostic
required). U* shall be implicitly convertible to T*."

***[unique.ptr.single.asgn]/1

Change: "Assignment of the deleter D from an rvalue D must not throw an
exception."

To: "Assignment of the deleter D from an rvalue D shall not throw an
exception."

***[unique.ptr.single.asgn]/6

Change: "Assignment of the deleter D from an rvalue D must not throw an
exception. U* must be implicitly convertible to T*."

To: "Assignment of the deleter D from an rvalue D shall not throw an
exception. U* shall be implicitly convertible to T*."

[alg.replace]/1

Change: "The expression *first = new_value must be valid."
To: "The expression *first = new_value shall be valid."

--
Later, Jerry.

The universe is a figment of its own imagination.

---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std...@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]

Pete Becker

unread,
Nov 5, 2007, 4:13:01 PM11/5/07
to
On 2007-11-05 12:59:41 -0500, jco...@taeus.com (Jerry Coffin) said:

>
> I did a bit of proofreading on N2461 and came up with a number of
> editorial changes. Most of them are minor changes in wording, changing
> "must" to "shall" in a number of places, adding cross-references in
> others, and so on.
>

Please send editorial corrections to edit...@versatilecoding.com.

--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)

0 new messages