Simplifying conversion and formatting code in Phobos

Andrei Alexandrescu via Digitalmars-d digitalmars-d at
Thu Sep 8 05:10:14 PDT 2016

On 9/7/16 9:49 PM, Walter Bright wrote:
> On 9/7/2016 8:46 AM, Jack Stouffer wrote:
>> Yeah, this problem ultimately comes down to healthy use of DRY in
>> Phobos in
>> regards to string handling code. This was always the tradeoff with
>> DRY: with
>> small pieces of reused code being put into functions, it makes
>> maintenance and
>> optimization easier, but code complexity increases. While it can be a
>> bit hard
>> to wrap one's head around it, once I did I found that for the most part,
>> std.conv is correct in delegating a lot of its functionality to other
>> functions
>> in std.conv and std.format in particular in order to stay fast.
> Consider a couple pulls I made for dup():
> Three templates were removed with no loss in functionality. I'm pretty
> sure the number of dup() templates can be reduced still further.
> Consider the pattern of overloads:
>    template foo(T) if (condition!T) { }
>    template foo(T) if (!condition!T) { }
> It makes condition!T a user-facing constraint, which it should not be.

This looks like a nice guideline. Good work. Pushing the roof now. -- Andrei

More information about the Digitalmars-d mailing list