2293. Wrong facet used by num_put::do_put

Section: [facet.num.put.virtuals] Status: C++14 Submitter: Juan Soulie Opened: 2013-09-04 Last modified: 2017-07-06

Priority: 0

View other active issues in [facet.num.put.virtuals].

View all other issues in [facet.num.put.virtuals].

View all issues with C++14 status.


At the end of [facet.num.put.virtuals] (in p6), the return value is said to be obtained by calling truename or falsename on the wrong facet: ctype should be replaced by numpunct.

[Issaquah 2014-02-11: Move to Immediate]

Proposed resolution:

This wording is relative to N3691.

  1. Edit [facet.num.put.virtuals] p6 as indicated:

    -6- Returns: If (str.flags() & ios_base::boolalpha) == 0 returns do_put(out, str, fill, (int)val), otherwise obtains a string s as if by

    string_type s =
      val ? use_facet<ctypenumpunct<charT> >(loc).truename()
          : use_facet<ctypenumpunct<charT> >(loc).falsename();

    and then inserts each character c of s into out via *out++ = c and returns out.