- Support r-value arguments
- Use variadic templates for arbitrary arguments
- Support allocators that are final
- Support allocators that use fancy pointers
- Support environments with disabled exceptions
- Improve compilation times
If an exception is thrown in the constructor of a smart pointer,
then the smart pointer should handle deallocating the memory.
If this was inside the try block, then the catch block would
deallocate the memory a second time.