Modify

Opened 11 years ago

Last modified 4 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 10 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 Changed 10 years ago by btmore@…

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.

Changed 10 years ago by Peter Dimov

Attachment: bind_weak_ptr.zip added

comment:2 Changed 10 years ago by Peter Dimov

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

Moved to Feature Requests, restored attachment.

comment:3 Changed 10 years ago by andy@…

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 Changed 9 years ago by Jonathan Wakely <jwakely.boost@…>

Cc: jwakely.boost@… added

comment:5 Changed 7 years ago by joseph.j.mudnackal@…

is this feature gonna be added anytime soon?

comment:6 Changed 4 years ago by Peter Dimov

Description: modified (diff)
Status: assignednew

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain Peter Dimov.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.