Default-valued nothrow @nogc std.conv:to

Stanislav Blinov via Digitalmars-d digitalmars-d at puremagic.com
Sat Apr 22 15:26:10 PDT 2017


On Saturday, 22 April 2017 at 18:26:56 UTC, Dmitry Olshansky 
wrote:
> On 4/22/17 6:57 PM, Stanislav Blinov wrote:
>> On Saturday, 22 April 2017 at 16:41:00 UTC, Nordlöw wrote:
>>
>>>> If defaultValue is not lazy, it's potentially wasteful.
>>>
>>> What do you mean with "potentially wasteful"?
>>>
>>> Excess calls to copy constructors?
>>
>> Evaluation of an expression the result of which might not be 
>> used.
>> defaultValue could be anything: a literal, an lvalue, a result 
>> of a
>> function call...
>
> IMO you are overenginering this. defaultValue will most likely 
> be something distinct such as compile-time constant.

I'm looking at it from the perspective of it being added to 
Phobos, which seems to be Nordlöw's intent. There should not be 
any assumptions in that scenario, or there should be an overload 
for the "most likely" case.
The signature says: defaultValue will be anything convertible to 
typeof(defaultValue), and is going to be evaluated regardless of 
whether or not std.conv.to() call throws.

All I'm saying is the purpose *suggests* that the defaultValue 
parameter should be lazy, and that that currently annotating it 
so defeats that purpose is due to a bug. Although one could work 
around the bug for the time being by using 
std.exception.assumeWontThrow.


More information about the Digitalmars-d mailing list