On Wednesday, 1 June 2016 at 19:59:51 UTC, Mark Isaacson wrote:
I'm trying to create a type that for all intents and purposes
behaves exactly like an int except that it limits its values to
be within a certain range [a,b]. Theoretically, I would think
this looks something like:
...
It looks like opDispatch doesn't participate in resolution of
operator overloads. Is there any way I can achieve my desired
result? I know alias this forwards operations like +=, but with
alias this I cannot wrap the operation to do the bounds
checking.
I think you would need to implement all of:
* this(...)
* opAssign(...)
* opOpAssign(...)
* opBinary(...)
* opBinaryRight(...)
* opUnary(...)
FWIW, the fixed range int part of this question is just an
example, I'm mostly just interested in whether this idea is
possible without a lot of bloat/duplication.
For a single type, I think the bloat is required. If you want to
generate a lot of similar types, though, you could probably write
a mixin template to generate the methods for you.