This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of TC1 status.

### 75. Contradiction in `codecvt::length`'s argument types

Section: 30.4.2.5 [locale.codecvt] Status: TC1 Submitter: Matt Austern Opened: 1998-09-18 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [locale.codecvt].

View all issues with TC1 status.

Discussion:

The class synopses for classes `codecvt<>` (22.2.1.5) and `codecvt_byname<>` (22.2.1.6) say that the first parameter of the member functions `length` and `do_length` is of type `const stateT&`. The member function descriptions, however (22.2.1.5.1, paragraph 6; 22.2.1.5.2, paragraph 9) say that the type is `stateT&`. Either the synopsis or the summary must be changed.

If (as I believe) the member function descriptions are correct, then we must also add text saying how `do_length` changes its `stateT` argument.

Proposed resolution:

In 30.4.2.5 [locale.codecvt], and also in 30.4.2.6 [locale.codecvt.byname], change the `stateT` argument type on both member `length()` and member `do_length()` from

> `const stateT&`

to

> `stateT&`

In 30.4.2.5.3 [locale.codecvt.virtuals], add to the definition for member `do_length` a paragraph:

> Effects: The effect on the `state` argument is ``as if'' it called `do_in(state, from, from_end, from, to, to+max, to)` for `to` pointing to a buffer of at least `max` elements.