Boost logo

Boost Users :

From: Todd Greer (TGreer_at_[hidden])
Date: 2006-12-19 09:39:48


On 12/19/06, me22 wrote:
> On 12/18/06, Phil Endecott <spam_from_boost_users_at_[hidden]> wrote:
> > Surely, since I have asked for %d in the format string, format() can
do
> > the cast? i.e. something like (PSEUDOCODE)
>
> I'm not convinced that having it act like stringstream and lexical
> cast is a bad thing. Using a uint8_t in a situation where its
> numerical value would often be output in textual representation also
> smells of unnecessary size optimization, to me.

OTOH, "This class's goal is to bring a better, C++, type-safe and
type-extendable printf equivalent to be used with streams."
(http://boost.org/libs/format/doc/format.html#rationale)

Being equivalent means that it should "provide printf-compatibility, as
much as it makes sense in a type-safe and type-extendable context."
(http://boost.org/libs/format/doc/format.html#rationale)

Given the above stated goals of boost::format, the following should be
equivalent unless that wouldn't make sense.

[quoted from OP]
uint8_t i = 65;
printf("i = %d\n",i);

uint8_t i = 65;
cout << boost::format("i = %d\n") % i;

I don't see any reason why it wouldn't make sense for these to be
equivalent, so I think they should be. If someone does have a reason why
it wouldn't make sense, then that reason should be added to the
rationale section of the documentation, as the current behavior goes
counter to a very reasonable expectation.

-- 
Todd Greer

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net