Dirk Reiners wrote: > Hi All, > > Carsten Neumann wrote: >>>>> Concepts >>>>> >>>>> - RefPtr should never auto convert from/to normal pointers >>>>> - this is similar to boost >>>>> - this should remove the transit ptr. >>>>> - basically make the transitptr the refptr >>>> this is tightly related to the argument/return type used for functions, >>>> see below. >>> this is one of my problems, a lot of comments, including the boost >>> shared_ptr FAQ, say auto conversion on this kind of pointer class is >>> not really a brilliant idea. >>> >>>> >From the boost FAQ >>> Q. Why doesn't shared_ptr (or any of the other Boost smart pointers) >>> supply an automatic conversion to T*? >>> >>> A. Automatic conversion is believed to be too error prone. >> it is sad that the boost folks have settled for such a weak answer to >> this question, not even giving pointers to any discussions :( >> I would have very much like to see the arguments that have led to that >> decision (I just read up on this in A. Alexandrescu "Modern C++ Design", >> Sect. 7.7, he does not seem to be that unequivocal about the issue).
My 0.02€: It think shared_ptr doesn't allow automatic conversion since it wraps something _that does not know it is refence counted_. If the reference count is internal to the object, it is easy to verify correct destruction within the object (assert(refs==0)) and there is much less dangers of converting to/from smart pointers, since the ref count is preserved across these conversions. I think the boost-policy is good for a non-intrusive utility, but something that uses a framework (ala OpenSG) can be more relaxed, since it has tighter control over the handled objects. Cheers, /Marcus ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Opensg-core mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensg-core
