29 Mar
2005
29 Mar
'05
2:48 a.m.
pps
Dan Bikel wrote:
Rather disturbingly, the following code compiles (at least, with g++-3.3.2): #include "boost/shared_ptr.hpp" using namespace boost; class X {}; int main() { const shared_ptr<X> y; delete y; } Normally, when you compile code with delete applied to a non-pointer type, you get a compile-time error. What's going on here?
try this:
struct X { operator X*(){ return this; } void operator delete (void *p){} }; int main(int, char*[]) { X x; delete x; }
But shared_ptr isn't implicitly convertible to anything, for just that reason. -- Dave Abrahams Boost Consulting www.boost-consulting.com