assumeSafeAppend and purity

Vladimir Panteleev vladimir at
Mon Feb 6 17:54:40 PST 2012

On Tuesday, 7 February 2012 at 01:47:12 UTC, Jonathan M Davis 
> At present, assumeSafeAppend isn't pure - nor is capacity or 
> reserve. AFAIK, none of them access any global variables aside 
> from GC-related stuff (and new is already allowed in pure 
> functions). All it would take to make them pure is to mark the 
> declarations for the C functions that they call pure (and those 
> functions aren't part of the public API) and then mark them as 
> pure. Is there any reason why this would be a _bad_ idea?

pure void f(const(int)[] arr)
	debug /* bypass purity check to pretend assumeSafeAppend is pure 
	arr ~= 42;

void main()
	int[] arr = [0, 1, 2, 3, 4];
	assert(arr[4] == 4, "f has a side effect");

More information about the Digitalmars-d mailing list