Uh... destructors?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Feb 23 07:46:43 PST 2011


On 2/23/11 9:42 AM, Steven Schveighoffer wrote:
> On Wed, 23 Feb 2011 10:35:26 -0500, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>> free(p) affects data remotely outside the pure function.
>
> This is allowed however in the new pure regime:
>
> pure void foo(int *x) {(*x)++;}
>
> int x;
> foo(&x);
>
> Or do you mean something else?
>
> -Steve

At a level it's clear to me that a function cannot be at the same time 
pure and unsafe. For example:

pure void foo(int *x) { free(x); (*x)++; }

This function essentially breaks any guarantee for the entire program, 
so it would be quite difficult to claim it's pure.


Andrei


More information about the Digitalmars-d mailing list