|
Boost : |
From: Mark Rodgers (mark.rodgers_at_[hidden])
Date: 2000-09-03 04:48:21
Very nice. I did notice a couple of little things:
1. Your operator= binds a non-const reference to a temporary in
the call to swap. Please change to
any & operator=(const any & rhs)
{
any temp(rhs);
return swap(temp);
}
2. Your implementations of const and non-const versions of to_ptr
are the wrong way round. In the const version, you cast away
constness leading to undefined behaviour. You should put the
work in the const version and cast away the constness of the
return value in the non-const version.
3. I have a question mark over the implementation of to_ptr. If
I write
boost::any a(3);
const int *pi = a.to_ptr<const int>();
then it seems to me that I'll be casting content to
holder<const int>, even though it's actually a holder<int>.
Perhaps you need to use remove_const from type_traits
in your cast.
Mark
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk