Re: Combining template conditions and contracts?

2016-02-29 Thread Daniel Kozak via Digitalmars-d-learn
auto square_root(T)(T x) if (isBasicType!T) in { assert(x >= 0); } out (result) { assert((result * result) <= x && (result+1) * (result+1) > x); } body { return cast(long)std.math.sqrt(cast(real)x); } void main() { import std.stdio: writeln; writeln(square_root(2)); } Dne 29.

Re: Combining template conditions and contracts?

2016-02-29 Thread Daniel Kozak via Digitalmars-d-learn
Dne 29.2.2016 v 15:38 Ozan via Digitalmars-d-learn napsal(a): T square_root(T)(T x) if (isBasicType!T) { in { assert(x >= 0); } out (result) { assert((result * result) <= x && (result+1) * (result+1) > x); } body { return cast(long)std.math.sqrt(cast(real)x); } import std.trait

Re: Combining template conditions and contracts?

2016-02-29 Thread Alex Parrill via Digitalmars-d-learn
On Monday, 29 February 2016 at 14:38:52 UTC, Ozan wrote: Is it possible to combine template conditions and contracts? Like in the following T square_root(T)(T x) if (isBasicType!T) { in { assert(x >= 0); } out (result) { assert((result * result) <= x && (result+1) * (result+1) > x);

Combining template conditions and contracts?

2016-02-29 Thread Ozan via Digitalmars-d-learn
Is it possible to combine template conditions and contracts? Like in the following T square_root(T)(T x) if (isBasicType!T) { in { assert(x >= 0); } out (result) { assert((result * result) <= x && (result+1) * (result+1) > x); } body { return cast(long)std.math.sqrt(cast(real)x); }