Opened 16 years ago

Last modified 9 years ago

#810 new Feature Requests (None)

support for weak_ptr binding

Reported by: nobody Owned by: Peter Dimov
Milestone: To Be Determined Component: smart_ptr
Version: None Severity: Optimization
Keywords: Cc: jwakely.boost@…

Description (last modified by Peter Dimov)

Hello,

recently i faced with problem - i was not able to pass weak_ptr to bind() function. I started to study why and found there is no support for this in boost.

As result, me and my friend wrote "get_pointer" version
which accepts weak_ptr. 

At actual call moment, implementation uses weak_ptr::lock() to get shared_ptr. If retrieved shared_ptr is invalid, then exception of type "disposed_exception" thrown.

This code was tested on Windows XP SP2 with following compilers: VC6, VC7, VC7.1, VC8, g++ 3.2.3 (MinGW), g++ 3.4.4 (Cygwin).

If you find this code is useful for someone else me, please add to boost (it's actually not a library, this is why i'm poosting it to "patches"). You can find sources + test app in attachment.


Thank you,
Dmytro Gokun

Attachments (1)

bind_weak_ptr.zip (2.2 KB ) - added by Peter Dimov 15 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 by btmore@…, 15 years ago

Are there any plans to add this type of functionality?

This would be very useful in my current project, but I'd rather stick with upstream instead of patching boost locally.

by Peter Dimov, 15 years ago

Attachment: bind_weak_ptr.zip added

comment:2 by Peter Dimov, 15 years ago

Milestone: To Be Determined
Severity: Optimization
Type: PatchesFeature Requests

Moved to Feature Requests, restored attachment.

comment:3 by andy@…, 15 years ago

For what it's worth, I second the request for this functionality. I was thinking about attempting to write a version myself for submission when I stumbled across this trac entry. I think that this form of bind would be extremely useful. I can't think of a nicer generic way to break a shared_ptr dependency while still maintaining decoupling using boost bind and function.

comment:4 by Jonathan Wakely <jwakely.boost@…>, 13 years ago

Cc: jwakely.boost@… added

comment:5 by joseph.j.mudnackal@…, 11 years ago

is this feature gonna be added anytime soon?

comment:6 by Peter Dimov, 9 years ago

Description: modified (diff)
Status: assignednew
Note: See TracTickets for help on using tickets.