Optimisation possibilities: current, future and enhancements
ag0aep6g via Digitalmars-d
digitalmars-d at puremagic.com
Fri Aug 26 12:58:47 PDT 2016
On 08/26/2016 09:51 PM, Patrick Schluter wrote:
> On Friday, 26 August 2016 at 14:03:13 UTC, Meta wrote:
[...]
>> class Test
>> {
>> int n;
>>
>> void setN(int val) pure
>> {
>> n = val;
>> }
>>
>> int getN() const pure
>> {
>> return n;
>> }
>> }
>
> getN() is not pure, simple as that (and an ideal compiler should
> complain in that case). A function is pure if it depends only of the
> state passed as parameter. If it touches memory that is set outside its
> scope it is NOT PURE!!!
You can rewrite that code like this:
----
class Test {/* ... as before but without getN ... */}
int getN(const Test test) pure { return test.n; }
----
Is getN pure now? It only touches memory via the parameter.
For methods we can think of `this` as a hidden parameter. If the method
is tagged `const` or `immutable`, it's really that hidden parameter that
is being qualified.
More information about the Digitalmars-d
mailing list