On 2014-12-22 6:07 PM, L. David Baron wrote:
On Monday 2014-12-22 17:54 -0500, Ehsan Akhgari wrote:
On 2014-12-22 4:56 PM, L. David Baron wrote:
I think removing implicit conversions to T* will make a lot of code
in the tree uglier (".get()" everywhere). That might, in turn,
encourage people to do worse things to avoid having to write .get()
everywhere; it's worth thinking about what those things will be.
Do you have any examples of those bad things? (FWIW I'm all for
making bad things impossible.)
* using raw pointers instead of smart pointers
I am planning on making that impossible [*] in 2015.
* making functions take nsRefPtr<T>& instead of T*, leading to
unnecessary risk of mutation of the caller's pointer and extra
indirection
* ... and perhaps the same for getters
Are there good use cases for having functions accept an nsRefPtr<T>&?
If not, we can outlaw them.
* using C-style casts (or reinterpret_cast) to make things compile
C-style casts would not be able to make anything compile if the class
doesn't provide an operator T*(). I'm not sure what you mean here.
[*] Obviously there will be syntax for the case where you really know
what you're doing and you really can't use a smart pointer, but
hopefully those scenarios should be few and far between.
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform