This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [c++0x] shared_ptr get() and use_count() inconsistency


Peter Dimov escreveu:

The current standard draft says that use_count() should return 0 if the shared_ptr is empty, and get() should return NULL if the shared_ptr is also empty.

http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#711

Thanks Peter. But I prefer the second solution you gave because it would lead to, IMHO, a sane smart pointer semantics.


Say you want to pass a weak_ptr to a function but only if it points to a not empty shared_ptr. One might write:

void func(std::weak_ptr<int> x) {}

std::shared_ptr<int> aux();
int i;
std::shared_ptr<int> sptr(aux, &i);

if(sptr)
	func(sptr);

In this case func would receive an weak_ptr that doesn't point to anything, although it was coded to not allow this, I mean, one would expect that if ptr.use_count()==0, (bool)ptr == false, but this doesn't hold above.

I know this is offtopic to this list, so I'm moving this to comp.lang.c++.moderated



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]