Boost logo

Boost :

From: Gennadiy Rozental (rogeeff_at_[hidden])
Date: 2002-04-22 05:22:14


I spend some more time on Loki style Policy based smart_ptr. I uploaded my
current approximation

It includes headers and test module I was using (tested on MSVC).
List of things I was lazy to add today:

1. ifdef template template parameters (do we need this?)
2. Did not address type of class hierarchy
3. ref_linked policy implementation
4. default template parameters.
5. Policies interconvertions

Here additional issues:

0. Note that version without template template parameters will not need type
T as a first parameter. You can access it though via value_type typedef.

1. Do we need to support compilers without member templates? I found that
some policies better to implement with them. If we do need this support, we
probably could provide version without member templates in separate file.
MSVC seems to have a bug with template copy constructor and assignment. But
I remember it was discussed and I hope to find a workaround.

2. Why do we need non const template copy constructor and assignment

3. Could we find convincing argument why do we need by_ref as a part of
smart_ptr interface? BTW boost have ref class with the same semantic.

4. equality comparison operators.
   a. Could we implement non-templates equality operators as free functions
(not a friends)? They implemented through other public functions.
   b. Why these operators trying to compare with const T* while it should be
   c. For the same reasons templated comparison operators should have U rhs
not U const* rhs. But they immediately become too greedy and cause
ambiguity. Do not know yet what to do.

5. std::less should be specialized on pointer_type not T* in the
implementation of std::less specialization for smart_ptr

6. Need a hook for custom allocator in nonintrusive_ref_counted ownership

7. com_ref does not belong to generic header. Need some kind of generic

8. Comment to my previous comment: I found unreasonable to separate checkers

9. Do we need std::swap specialization?

10 Do we need templated reset?



Boost list run by bdawes at, gregod at, cpdaniel at, john at