On Friday, 9 October 2015 at 12:19:55 UTC, Ola Fosheim Grøstad wrote:
On Friday, 9 October 2015 at 04:15:42 UTC, Ali Çehreli wrote:
Go feature where you just type a dot after a pointer and the language is so great that it works! You don't need to type (*p).member. Isn't Go awesome!

I responded "yep, it's a great feature and those gostards will never admit that they took that feature from D." (There is probably earlier precedence but it felt great to say it to my friend. :) )

Just about all higher languages does this, since the reference type does not have members. Simula too.

But this unfortunately breaks down when you add smart-pointers, which makes this approach unsound since pointer-type members collide with object members.

So C++ actually got this right by requiring explicit dereferencing.

The only case in which the C++ way is right is when there are two member functions of the same name in the pointed-to object and the smart pointer itself since you can disambiguate `ptr->get()` from `ptr.get()`.

Atila

Reply via email to