On Tue, 08 Feb 2011 11:09:44 -0500, Steven Schveighoffer <schvei...@yahoo.com> wrote:

On Tue, 08 Feb 2011 10:55:23 -0500, spir <denis.s...@gmail.com> wrote:

On 02/07/2011 11:38 PM, Tomek Sowiński wrote:
Jonathan M Davis napisał:

On Monday 07 February 2011 13:10:09 Tomek Sowiński wrote:
Looks like std.conv.to always allocates behind the scenes. It's a shame as
the returned string is immediately processed and discarded in my XML
writer. Are there plans to include a custom output variant, e.g.
to!string(7, outputRange)?

http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP9

I know about Steven's proposal but it applies only to user types not primitives. Either way std.conv.to would need a buffered output range as integers are written from the right. Any chance for an abstraction analogous to buffered input ranges discussed recently?

I haven't read a solution like the proposal for writeTo would not apply to primitives. Is it really so? (If only for language consistency, I would prefere this big shift to apply to all types.)

writeTo does not need to apply to primitives because primitives can be written to streams without first converting to char[]. For instance, one does not write:

writeln(to!string(5))

The whole point of writeTo is to allow easy output of custom data types that the standard library does not know how to output. It was not meant to extend to primitives.

As far as Tomek's request, I would expect std.format.formattedWrite(buffer, "%s", 7) to work, or std.format.formatValue (with associated FormatSpec, which I don't feel like looking up the usage of)

BTW, I think we probably should have a formatValue override like this

void formatValue(Char, Writer, T)(Writer w, T t)
{
   FormatSpec!Char fs; // use default options
   formatValue(w, t, fs);
}

Having to construct a FormatSpec when I just want the default seems like overkill. Esp. since FormatSpec arg is always ref.

-Steve

Reply via email to