I want to start using smart pointers in my code but I don't really want to use Boost because it's so huge.
Can anyone recommend a simple, one-file smart pointer implementation?
Thanks, Boda Cydo.
I want to start using smart pointers in my code but I don't really want to use Boost because it's so huge.
Can anyone recommend a simple, one-file smart pointer implementation?
Thanks, Boda Cydo.
Unfortunately, smart pointers are not all that simple, so the implementation may be quite complicated. Having said that, if you are using g++ you get things like shared_ptr without having to use Boost:
#include <memory>
using namespace std;
int main() {
shared_ptr <int> p( new int );
}
but you will have to compile with the -std=c++0x
flag.
You could upgrade to a recent-enough compiler and use what TR1 gives you. The compiler I use has included TR1 pre-releases for many years.
The thing is boost is just a set of header files (the majority).
So when you use things like smart pointers all you get are the smart pointers.
There is no extra cost for the things you are not using.
Probably this may help you: http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.22. It's a short example for implementing reference counting. In case you're implementing "shared_ptr" by yourself, cases of simple pointer and array should be distinguished, like in boost.