Steven D'Aprano <steve-remove-t...@cybersource.com.au> writes: > I'm not saying that ref counting systems can avoid incrementing and > decrementing the ref counts. That would be silly. But I'm saying that it > is an accident of implementation that writing C extensions requires you > to manually manage the counts yourself. That's a side-effect of > permitting coders to write C extensions in pure C, rather than in some > intermediate language which handles the ref counts for you but otherwise > compiles like C. If people cared enough, they could (probably) make the C > compiler handle it for them, just as it currently handles incrementing > and decrementing the return stack.
I guess that is how the so-called smart pointers in the Boost C++ template library work. I haven't used them so I don't have personal experience with how convenient or reliable they are, or what kinds of constraints they imposed on programming style. I've always felt a bit suspicious of them though, and I seem to remember Alex Martelli (I hope he shows up here again someday) advising against using them. I don't think a C compiler could really manage automatic decrementing while still being C. Think especially of the common style of exception handling in C using longjmp. -- http://mail.python.org/mailman/listinfo/python-list