Boost logo

Boost :

From: Michael Marcin (mike_at_[hidden])
Date: 2007-07-31 12:38:29


Hello,

I have something like:

class A;
boost::array<A*,10> the_array;

std::fill( the_array.begin(), the_array.end(), NULL );

Which wont compile (at least under Visual Studio 2005) without a cast
for NULL... I've had this problem before and decided to try to find an
easy cast free expressive solution for it.

After a few minutes I came up with:

namespace detail
{
     struct null_ptr_impl
     {
         template< typename T >
         operator T* () const { return static_cast<T*>(0); }
     };
} // end namespace detail
const detail::null_ptr_impl null_ptr;

std::fill( the_array.begin(), the_array.end(), null_ptr );

Does this exist somewhere already? Is it a good solution?

Thanks,

Michael Marcin


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk