
----- Original Message ----- From: "Peter Dimov" <pdimov@mmltd.net> To: <Boost-Users@yahoogroups.com> Sent: Monday, May 13, 2002 1:44 PM Subject: Re: [Boost-Users] boost::shared_ptr and NULL
From: "Andrew R. Thomas-Cramer" <artc@prism-cs.com>
In this function declaration, is there a simpler way to express a null
void foo( const boost::shared_ptr<T> & p = boost::shared_ptr<T>( ) );
In this function call, is there a simpler way to express a null shared
shared pointer as the default argument value? pointer as the actual argument?
foo( boost::shared_ptr<T>( ) );
No to both. In 1.27 boost::shared_ptr can be constructed from the literal 0, but the constructor is explicit. In 1.28, the literal 0 is no longer a valid argument to the constructor.
Has there been any discussion in the past about supporting a more concise/readable value? E.g., the second call below appears more readable to me. (This particular example relies on "boost::null" being a class with a default constructor, and boost::shared_ptr providing a non-explicit constructor accepting a boost::null instance as an argument; this may be flawed.) foo( boost::shared_ptr<MyVeryLongClassName>() ); foo( boost::null() );