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