Compile time function execution...

Walter Bright newshound at digitalmars.com
Thu Feb 15 10:23:43 PST 2007


... is now in DMD 1.006. For example:

> -------------------------------------------
> import std.stdio;
> 
> real sqrt(real x)
> {
>    real root = x / 2;
>    for (int ntries = 0; ntries < 5; ntries++)
>    {
>        if (root * root - x == 0)
>            break;
>        root = (root + x / root) / 2;
>    }
>    return root;
> }
> 
> void main()
> {
>    static x = sqrt(10);   // woo-hoo! set to 3.16228 at compile time!
>    writefln("%s, %s", x, sqrt(10));  // this sqrt(10) runs at run time
> }
> ------------------------------------------

This should obsolete using templates to compute values at compile time.



More information about the Digitalmars-d mailing list