Re: Please help with testing & improving a StringValue class
Alf P. Steinbach wrote:
* Barry:
Alf P. Steinbach wrote:
I once suggested in [comp.std.c++] that SomeOne Else(TM) should propose
Alf,
I made some modification to v00
Aim:
Use policy for `DeleteFunc' template parameter for `SharedArray'
the DeleteFunc policy class should contain
static void Detete(T* p);
then `SharedArray' has no need to store the free function as member
I'll mail you the code that I modify, since the modification is sparse.
I got your code before I read the above explanation. I struggled a bit
to make it report memory leaks (why the &%?/(()! doesn't that code
report leaks?), since I didn't notice you'd added a policy. But did
notice the main program changes, which "should" have caused some leaks...
It saves four or eight bytes (32-bit/64-bit machine) per ref-counted
instance, at the (marginal) cost of requiring a free deleter function to
have extern linkage or be wrapped in a class.
Extern linkage: I'm thinking any free extern linkage function can be
automatically mapped to a suitable functor class; no need for client
code to define them, at least not if I'm not muddled in my thinking.
Well, when I was doing that policy design
I came to a question
* Use static function or operator()
choose the latter one, then I have to make an instance of the functor
before calling, just like the tr1::hash. It looks awful, but it has one
advantage, it's stateful, even more, we can then use tr1::bind to form
any functor.
But in this case, no storing the functor makes the statefulness
impossible, I think a static function is enough, so I made this choice.
--
Thanks
Barry