
Anis Benyelloul wrote:
I just had a quick look! I seems that their concern was about redefining NULL itself, not about a NULL replacement as such. By the way, I didn't redefine NULL.
The problem was indeed mostly about me redefining NULL (which I admit now was a bad idea), but there is still a problem with the template based null that was shown to me by Eric Niebler (edited to make it look more like a real world example): template < typename Type > struct SmartPtr { SmartPtr ( Type * ) { } }; void Bar ( SmartPtr < int > ) { } void Test ( ) { Bar ( boost::null ); // fails, requires two user defined conversions } I suppose SmartPtr could add a constructor taking boost::null_type, but that seems horribly redundant, especially when passing 0 for null would still work perfectly without the need for another constructor. Any ideas for solving this use case? -Jason