Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2005-03-28 21:48:45


pps <i-love-spam_at_[hidden]> writes:

> 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

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net