Right. Thanks, guys. I do see how this could possibly cause bugs for the uninitiated. Someone who is new to D might attempt to use to!string with multiple arguments, and end up with buggy code like this:
import std.stdio; import std.conv; void main() { int x = 2; int y = 4; // more code.. writeln(to!string(x, y)); // writes "2", not "2 4", and not "24" } On 12/21/10, Simen kjaeraas <simen.kja...@gmail.com> wrote: > Andrej Mitrovic <n...@none.none> wrote: > >> I found this by accident: >> >> import std.stdio; >> import std.conv; >> >> void main() >> { >> writeln(to!string(2, 2)); // writes 10 >> writeln(to!string(1, 0)); // std.conv.ConvException: Radix error >> } >> >> I'm not sure why "std.conv.to" would even take multiple arguments. >> Bugzilla? > > The second parameter is (as indicated by the exception) the radix[1]. > With a radix of 2, 2 is written 10, as radix is binary. Radix 0 makes > no sense, and thus gives an exception. > > It could be said though, that std.conv's documentation is confusing > at best, and this could be worth putting in Bugzilla. > > [1]: > http://en.wikipedia.org/wiki/Radix#Bases_and_positional_numeral_systems > > -- > Simen >