This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
Section: 31.7.8 [ext.manip] Status: C++11 Submitter: Daniel Krügler Opened: 2008-03-01 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [ext.manip].
View all issues with C++11 status.
Discussion:
The recent draft (as well as the original proposal n2072) uses an
operational semantic
for get_money
([ext.manip]/4) and put_money
([ext.manip]/6), which uses
istreambuf_iterator<charT>
and
ostreambuf_iterator<charT>
resp, instead of the iterator instances, with explicitly provided
traits argument (The operational semantic defined by f
is also traits
dependent). This is an obvious oversight because both *stream_buf
c'tors expect a basic_streambuf<charT,traits>
as argument.
The same problem occurs within the get_time
and put_time
semantic
where additional to the problem we
have an editorial issue in get_time
(streambuf_iterator
instead of
istreambuf_iterator
).
[ Batavia (2009-05): ]
This appears to be an issue of presentation.
We agree with the proposed resolution. Move to Tentatively Ready.
Proposed resolution:
In 31.7.8 [ext.manip]/4 within function f
replace the first line
template <class charT, class traits, class moneyT> void f(basic_ios<charT, traits>& str, moneyT& mon, bool intl) { typedef istreambuf_iterator<charT, traits> Iter; ...
In 31.7.8 [ext.manip]/5 remove the first template charT
parameter:
template <class charT,class moneyT> unspecified put_money(const moneyT& mon, bool intl = false);
In 31.7.8 [ext.manip]/6 within function f
replace the first line
template <class charT, class traits, class moneyT> void f(basic_ios<charT, traits>& str, const moneyT& mon, bool intl) { typedef ostreambuf_iterator<charT, traits> Iter; ...
In 31.7.8 [ext.manip]/8 within function f
replace the first line
template <class charT, class traits> void f(basic_ios<charT, traits>& str, struct tm *tmb, const charT *fmt) { typedef istreambuf_iterator<charT, traits> Iter; ...
In 31.7.8 [ext.manip]/10 within function f
replace the first line
template <class charT, class traits> void f(basic_ios<charT, traits>& str, const struct tm *tmb, const charT *fmt) { typedef ostreambuf_iterator<charT, traits> Iter; ...
In 31.7 [iostream.format], Header <iomanip>
synopsis change:
template <class charT,class moneyT> T8 put_money(const moneyT& mon, bool intl = false);