Idea: function contracts + CTFE
dennis luehring
dl.soluz at gmx.net
Fri Jun 20 12:02:07 PDT 2008
>Jarrett Billingsley schrieb:
>....
> If I call fork(30), this is obviously an error, but won't be reported until
> runtime, and even then, *only in debug mode*.
>...
> It seems like a cool idea anyway. I wonder, in practice, how often the
> compiler would be able to evaluate the contracts, and if it would be of
> practical use. Or if there would be a better way to do this (like extending
> the new template parameter constraints to functions: "void fork(int x) if(x
> >= 0 && x < 20)").
if got the same for assert itselfe
why do assert not act like an static assert if the evaluated is a
compiletime value
something like
better_assert( predicat, text )
{
static if compile_time_value( predicate )
static assert( predicate, text )
else
assert( predicate, text )
}
function test( int value )
{
better_assert( value == 4 );
// bla bla
}
test( 5 ); // compiletime error
test( non_const_wrong_value_variable ); // runtime assert
and this does not realy help in this small testcase
but think of the 1000 in/out checks and normal asserts in your projects
do realy want to see the problem only when you actualy call a specific
function?
ciao dennis
More information about the Digitalmars-d
mailing list