std.experimental.checkedint is ready for comments!

tsbockman via Digitalmars-d digitalmars-d at puremagic.com
Wed Jun 15 08:22:54 PDT 2016


On Wednesday, 15 June 2016 at 07:08:22 UTC, Walter Bright wrote:
> On 6/14/2016 9:57 PM, tsbockman wrote:
>> The intent is just as clear this way, and it's less verbose.
>
> Ok. I'd just change the constraint to:
>
>     if (isIntegral!N || isCheckedint!N)
>
> You can do the qualification machinations using a static if 
> inside the template.

This was a deliberate design decision, which I do not think 
should be changed (although I will if you insist):

     * With your signature, the user may wrongly expect SmartInt to
       support qualified `N`. My scheme encodes the fact that only 
unqualified
       types are *really* supported in the public signatures.

       (I should add an explanatory note about this in the docs, 
too.)

     * Your scheme will make uglier and more verbose error 
messages and fully
       qualified type signatures, as `SmartInt` will become 
`SmartInt.SmartInt`
       or `SmartIntImpl`. This is confusing for users who are not 
familiar with
       the details of D's template system, and still annoying for 
the rest of us.

     * Your scheme will also complicate the docs, as it will 
replace the top-level
       entry for `struct SmartInt` with a nested
       `template SmartInt` => `struct SmartInt` entry.



More information about the Digitalmars-d mailing list