On Sun, Jul 21, 2013 at 11:59 PM, Justin Lebar <justin.le...@gmail.com>wrote:

> > It seems really dangerous that there is an implicit conversion from a
> strong
> > ref ptr to a weak pointer. With C++11, you can thankfully require this
> > conversion to be explicit which should alleviate your concern.
>
> Wouldn't disallowing this implicit conversion break code which does
>
>   void UseFoo(nsIFoo* foo);
>
>   nsCOMPtr<nsIFoo> foo;
>   UseFoo(foo);
>
> ?  That is an extremely common idiom in our code.
>

That idiom seems dangerous by itself; the assumption it makes is that the
reference will outlive the callee but that isn't actually enforced anywhere
(you could write UseFoo(nsRefPtr<T>(new T)) and Bad Things would happen;
there are less obvious ways to write this). I would rewrite UseFoo to take
an const nsRefPtr<nsIFoo>& instead and then you don't have to worry about
these issues.

-Rob
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to