and the constructor that's implicitly called by the above is
defined to throw an out-of-range exception if pos > str.size(). See
section 20.3.2.1 [string.require] paragraph 4.

On the other hand, the compare function descriptions themselves don't have
"Throws: " clauses and according to 17.3.1.3, paragraph 3, elements
that do not apply to a function are omitted.

So it seems there is an inconsistency in the standard -- are the
"Effects" clauses correct, or are the "Throws" clauses
missing?

Proposed resolution:

In 15.4.1.4 [structure.specifications] paragraph 3, the footnote 148 attached to
the sentence "Descriptions of function semantics contain the
following elements (as appropriate):", insert the word
"further" so that the foot note reads:

To save space, items that do not apply to a function are
omitted. For example, if a function does not specify any further
preconditions, there will be no "Requires" paragraph.

Rationale:

The standard is somewhat inconsistent, but a failure to note a
throw condition in a throws clause does not grant permission not to
throw. The inconsistent wording is in a footnote, and thus
non-normative. The proposed resolution from the LWG clarifies the
footnote.