static if enhancement

Wyatt via Digitalmars-d digitalmars-d at puremagic.com
Thu Jun 30 10:09:19 PDT 2016


On Thursday, 30 June 2016 at 11:06:56 UTC, Steven Schveighoffer 
wrote:
> On 6/29/16 11:40 AM, Wyatt wrote:
>> I might be stepping on a land mine by bringing it up, but 
>> isn't this
>> sort of thing what contracts are for?
>
> No landmines here, but no, that isn't what contracts are for. 
> Perhaps you mean constraints?

Sure. IME, contracts are generally written as a series of 
constraints anyway.

> A constraint will prevent compilation vs. allowing compilation 
> but emitting a failure at runtime. I agree this is a better 
> mechanism, or just plain allow the compiler to make a proper 
> error when you call gun.

Isn't doing it at compile time as simple as using e.g. static 
assert(hasMember(T, "gun"))?  I do feel like I've been in 
situations before where this kind of thing was better as a 
recoverable runtime exception, but I can't remember where.

The more I think about this, though, the less the proposal makes 
sense for the problem.  Like, I get that it might be a tiny bit 
annoying, but I see a lot more potential for human error; pulling 
a "goto FAIL" and running code that shouldn't be or such.

-Wyatt


More information about the Digitalmars-d mailing list