forcing compile time function execution

Joshua Reusch yoschi at arkandos.de
Tue Dec 27 12:33:36 PST 2011


Am 27.12.2011 21:27, schrieb Vladimir Panteleev:
> On Tuesday, 27 December 2011 at 20:11:32 UTC, Joshua Reusch wrote:
>> Am 27.12.2011 20:51, schrieb Vladimir Panteleev:
>>> On Tuesday, 27 December 2011 at 19:46:31 UTC, Joshua Reusch wrote:
>>>> Am 27.12.2011 20:35, Vladimir Panteleev wrote:
>>>>> Halting problem?
>>>>
>>>> Makes an not-stopping pure function really sense?
>>>
>>> No, but you don't know if the user is expecting the function to take a
>>> long time to run, or it's stuck due to a bug.
>>>
>>
>> If the function gets evaluated at compile-time, also the
>> loop/recursion conditions are known.
>
> We're back at the halting problem. There are heuristics, but you can't
> know for sure.
>

Sorry, of course... Some other attribute (@ctfe) would really be better 
for this...

> For example:
>
> for (auto i=arr.length-1; i>=0; i--)
>
> On 64-bits, i will be 64 bits too (because arr.length is size_t). Since
> it's unsigned, the loop will wrap, and it'll take a very long time until
> it'll reach a state it's been in before.

Joshua


More information about the Digitalmars-d mailing list