Do pure functions solve the "return const" problems?
schveiguy at yahoo.com
Tue Apr 1 11:40:55 PDT 2008
"Russell Lewis" wrote
> I've been pondering the discussions about "return const" and such.
> Basically, the idea is to be able to define a function which is not
> allowed to modify certain data, but which can return subsets of that data
> in a non-const fashion. Classic examples are strstr (scan, but don't
> alter, the data, but return a usable pointer) and min/max (compare the
> items and return one, but return non-const versions of them).
> Are pure functions the way? Isn't a pure function required to not modify
> the data? And, for that reason, can't a pure function be utterly ignorant
> of the const-ness of the data?
> BEGIN CODE
> pure char strstr(char haystack, char needle)
> // perform the search
> int indx = <whatever>
> return haystack[indx..$];
> END CODE
Having never used pure functions, I'm not sure that this is the case for
C++'s pure functions, but I thought pure functions for D would require
invariant arguments, no? Otherwise, how do you guarantee another thread
doesn't come along and munge the data while the pure function is running?
More information about the Digitalmars-d