On Friday, 29 August 2014 at 05:05:55 UTC, H. S. Teoh via Digitalmars-d-learn wrote:
On Fri, Aug 29, 2014 at 04:37:37AM +0000, Andrew Godfrey via Digitalmars-d-learn wrote:
Unless the property you're accessing is also a pointer property, like
sizeof. Then you have to be careful.

True. Though if you're writing generic code, chances are that what you want is the pointer size rather than the size of the referenced object. You only really get into trouble when you have to explicitly work with
pointers.

Thanks for the link.
'sizeof' is not so bad anyway because it's a property of the type.
It would be worse if pointers had properties.

If you're insane enough to do the following, then this happens...

struct Foo {
    int bar() { return 10; }
}

int bar(Foo f) { return 42; }
int bar(Foo *f) { return 43; }
int bar(Foo **f) { return 44; }

unittest {
    Foo foo;
    auto pfoo = &foo;
    assert((*pfoo).bar == 10);
    assert(pfoo.bar == 10);

    auto ppfoo = &pfoo;
    assert(ppfoo.bar == 44);
}

Reply via email to