This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofC++11 status.
Section: 31.7.8[ext.manip]Status:C++11Submitter: Daniel KrüglerOpened: 2008-03-01Last modified: 2016-01-28
Priority:Not Prioritized
View all otherissues in [ext.manip].
View all issues withC++11 status.
Discussion:
The recent draft (as well as the original proposal n2072) uses anoperational semanticforget_money ([ext.manip]/4) andput_money ([ext.manip]/6), which uses
istreambuf_iterator<charT>
and
ostreambuf_iterator<charT>
resp, instead of the iterator instances, with explicitly providedtraits argument (The operational semantic defined byf is also traitsdependent). This is an obvious oversight because both*stream_bufc'tors expect abasic_streambuf<charT,traits> as argument.
The same problem occurs within theget_time andput_time semantic where additional to the problem wehave an editorial issue inget_time (streambuf_iterator instead ofistreambuf_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 functionf 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 templatecharT parameter:
template <class charT,class moneyT> unspecified put_money(const moneyT& mon, bool intl = false);
In 31.7.8[ext.manip]/6 within functionf 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 functionf replace the first line
template <class charT, class traits> void f(basic_ios<charT, traits>& str, struct tm *tmb, const charT *fmt) { typedefistreambuf_iterator<charT, traits> Iter; ...In 31.7.8[ext.manip]/10 within functionf 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);