Using std.format required std.string?

Robert M. Münch via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Mar 16 04:32:01 PDT 2015


On 2015-03-15 19:16:52 +0000, anonymous said:

>> Answerting myself:
>> 
>> static if (__traits(compiles, version_minor < 67))
>> import std.string; // format() for versions < 2.0.67
>> else
>> import std.format; // format() for versions >= 2.0.67
> 
> That doesn't do what you want.
> 
> You need to `import std.compiler;` for version_minor. Without that 
> import, `__traits(compiles, version_minor < 67)` is always false, 
> because version_minor is undefined.

I have std.compiler imported.

> And if you add the import, `__traits(compiles, version_minor < 67)` is 
> always true, no matter the value of version_minor. Use `static 
> if(version_minor < 67)` instead.

Ah, ok. Got it. so __traits(compiles,...) checks if the code can be 
compiled, that's it.

> Finally, there's need for this (yet). `std.string.format` is fine with 
> 2.067, too. So unless you're going for (far) future compatiblity, you 
> can just do `import std.string;`.

I prefer to move things to the "far future compatibility" path ASAP. 
Reduce a lot of maintenance headaches.

Thanks for the feedback.

-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster



More information about the Digitalmars-d-learn mailing list