CTFE Status
Stefan Koch via Digitalmars-d
digitalmars-d at puremagic.com
Sat Dec 31 08:32:42 PST 2016
global immutable integer Arrays are now completely functional!
This makes the following code work:
uint echo (uint val)
{
return val;
}
const(uint) fastLog10(const uint val) pure nothrow @nogc {
return (val < 10) ? 0 :
(val < 100) ? 1 :
(val < 1000) ? 2 :
(val < 10000) ? 3 :
(val < 100000) ? 4 :
(val < 1000000) ? 5 :
(val < 10000000) ? 6 :
(val < 100000000) ? 7 :
(val < 1000000000) ? 8 : 9;
}
/*@unique*/ static immutable uint[10] fastPow10tbl = [
1,
10,
100,
1000,
10000,
100000,
1000000,
10000000,
100000000,
1000000000,
] ;
static assert(fastLog10(fastPow10tbl[2]) == 2);
static assert(fastLog10(fastPow10tbl[3]) == 3);
static assert(fastLog10(1000) == 3);
static assert(echo(fastPow10tbl[1]) == 10);
More information about the Digitalmars-d
mailing list