|
Boost : |
Subject: [boost] unique_ptr for C++03
From: Andrew Ho (helloworld922_at_[hidden])
Date: 2013-08-03 05:00:28
Hi,
I implemented std::unique_ptr using C++03 features plus a few other Boost
Libraries. Incidentally, I also implemented default_delete (which binds to
std::default_delete if available) because it's required for unique_ptr.
https://github.com/helloworld922/unique_ptr
The library binds to std::unique_ptr if standard library support is
available.
There are a few things I don't think I'll be able to emulate exactly.
Namely:
- I don't think the deleter can ever be forwarded correctly (limitation of
C++03). Ideas/suggestions for how to best handle this are welcome
(currently, I move the deleter if E == D and copy otherwise, I think)
- There's no explicit conversion overloads in C++03. Currently I have
operator bool() implemented non-explicitly if there's no compiler support,
relying on the user to only use it "as-if explicit". An alternative solution
is to remove the typecast operator and force users to use get() ==
NULL_VALUE.
- functions relying on nullptr_t are only enabled if compiler support is
available. Again, I don't think there's any possible work-around for C++03.
There are also a few missing features (still working on the implementation):
- make_unique (part of c++14)
- nullptr_t comparison operators
Current dependencies (assuming no C++11 std::unique_ptr):
- Boost.Config
- Boost.Move
- Boost.TypeTraits
Comments/Feedback is welcome.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk