On 30/05/12 01:47, Mehrdad wrote:
Just a general note: going the "make a special case for two comparisons"
route won't work if, for example, someone decides to use a lambda for
comparing pointers.

You mean effectively like:

bool cmp(void *x, void *y)
{
   return x < y:
}

assert ( cmp(x, y) && cmp(x, z) );

?
Yes, this is why it's a special case.


I can imagine how that could be implemented in the current CTFE, I cannot see how it could be done reasonably with a JIT CTFE implementation.

You'd have to have a special lamba for "pointer inside a range" rather than simple pointer comparisons.

I'm suggesting that "is pointer inside a range" is a different primitive operation from "comparison of two pointers to the same memory block".

Even though C code typically uses the latter to implement the former, it's relying on undefined behaviour.

Reply via email to