On Saturday, 18 January 2014 at 00:42:35 UTC, Rikki Cattermole
wrote:
Perhaps using template if statements and pure functions. A
little like how I implemented some of Dvorm's[0] utility
functions. That way it can execute at compile time. You can
pass the type to it and check any method you would call if its
nothrow or not via traits.
Obviously I didn't explain myself clearly. I know how to
determine if a function is nothrow or pure or @safe or anything
else thanks to D's awesomeness :) But what I want is a way to
*use* that knowledge when declaring my own functions. Or rather,
tell the compiler "Wait, I really want this to be nothrow, but I
don't know if that function will throw. Here's a check for you,
please make me nothrow if it passes". After all, tags are not
just for enforcing correctness at compile time, they can be used
(once verified) for optimization too. So it'd be nice to find a
way to provide all the nice info to the compiler whenever
possible. It's not just about nothrow, but also pure,
@safe/@system/@trusted, hell, even public/protected/private for
that matter. :)
That way you can have two declarations but with one being
opposite of the if.
...Or four in case I'd also want pure/not pure, or nine if I'd
also want @safe/not @safe...