Another idiom I wish were gone from phobos/druntime
deadalnix via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 4 17:32:59 PST 2015
On Thursday, 5 February 2015 at 01:07:56 UTC, Andrei Alexandrescu
wrote:
> Yah, I agree "in" is useful for overridable functions. In fact
> I'd say it's useful _only_ for overridable functions.
>
Putting the contract in the caller is not only useful for
overridable functions.
1/ If a lib is compiled in without contract, but your code is
compiled with, you get the in contract to run when you call
library code, but not the assert within the function.
2/ The optimizer see the properties of the argument when they get
to the in contract. This information is lost in the callee,
unless inlining goes on. that means the amount of contract the
optimizer can remove statically is greater with in contract.
More information about the Digitalmars-d
mailing list