On Sunday, April 29, 2012 16:28:23 Dmitry Olshansky wrote:
> On 29.04.2012 10:42, Jonathan M Davis wrote:
> > But regardless of whether you use alias this or opDispatch, you have the
> > same problem with regards to ->. In C++, . would be used to call the
> > smart pointer's functions, and ->  would be used to call functions on the
> > object pointed to. In D, the two aren't distinguished - both use . - so
> > you can't have any functions on the type pointed to which conflict with
> > the smart pointer's functions, or you won't be able to call them (unless
> > another way to call them is provided somehow). So, it's definitely
> > something that C++ does better with as far as that goes.
> 
> So you just need not to have any _member_ functions on smart pointer?
> Just use free functions that take SmartPointer!T. UFCS may also lend a
> hand if T and SmartPointer do not have ambiguous funcs.

That could work (though they'd obviously have to be in the same module as the 
smart pointer - not exactly an onerous requirement - in order to be able to 
access its private members).

- Jonathan M Davis

Reply via email to