Movatterモバイル変換


[0]ホーム

URL:



This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofC++11 status.

810. Missing traits dependencies in operational semantics of extended manipulators

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);

[8]ページ先頭

©2009-2026 Movatter.jp