153. Typo in narrow() semantics

Section: 25.4.1.3.2 [facet.ctype.char.members] Status: CD1 Submitter: Dietmar Kühl Opened: 1999-07-20 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [facet.ctype.char.members].

View all issues with CD1 status.

Duplicate of: 207

Discussion:

The description of the array version of narrow() (in paragraph 11) is flawed: There is no member do_narrow() which takes only three arguments because in addition to the range a default character is needed.

Additionally, for both widen and narrow we have two signatures followed by a Returns clause that only addresses one of them.

Proposed resolution:

Change the returns clause in 25.4.1.3.2 [facet.ctype.char.members] paragraph 10 from:

    Returns: do_widen(low, high, to).

to:

    Returns: do_widen(c) or do_widen(low, high, to), respectively.

Change 25.4.1.3.2 [facet.ctype.char.members] paragraph 10 and 11 from:

        char        narrow(char c, char /*dfault*/) const;
        const char* narrow(const char* low, const char* high,
                           char /*dfault*/, char* to) const;
        Returns: do_narrow(low, high, to).

to:

        char        narrow(char c, char dfault) const;
        const char* narrow(const char* low, const char* high,
                           char dfault, char* to) const;
        Returns: do_narrow(c, dfault) or
                 do_narrow(low, high, dfault, to), respectively.

[Kona: 1) the problem occurs in additional places, 2) a user defined version could be different.]

[Post-Tokyo: Dietmar provided the above wording at the request of the LWG. He could find no other places the problem occurred. He asks for clarification of the Kona "a user defined version..." comment above. Perhaps it was a circuitous way of saying "dfault" needed to be uncommented?]

[Post-Toronto: the issues list maintainer has merged in the proposed resolution from issue 207, which addresses the same paragraphs.]