Boost logo

Boost Users :

Subject: Re: [Boost-users] [bind] counterintuitive behavior with vector and auto_ptr
From: Tiemo.Jung_at_[hidden]
Date: 2010-06-12 05:12:45


Hi,

the reason why the for_each loop works, boost::bind unwraps the auto_ptr
with get(), and get() does not trigger a debug break, but the operator ->
does, so your other calls trigger a breakpoint (on release build this will
be disabled and all test will pass). And the boost bind call of A::foo
does not crash, because it does not touches 'this' of the object (the bind
call uses the static address of A::foo and not the vtable of A).

TJ.

Am 12.06.2010, 08:41 Uhr, hast Du in gmane.comp.lib.boost.user geschrieben:

> Hi there,
>
<---Schnitt--->
>>
>> It isn't. Boost.Bind passes the arguments by reference, so
>> the auto_ptr is never copied.
>
> All auto_ptrs have been copied a couple of lines before. See the
> std::copy call. After that my debugger tells me that all auto_ptrs are
> empty which makes sense. Still not clear to me what exactly happens
> when using bind.
>
> Christian


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