Opened 13 years ago

Closed 12 years ago

#3705 closed Feature Requests (wontfix)

Boost.Function FAQ

Reported by: anonymous Owned by: Douglas Gregor
Milestone: Boost 1.42.0 Component: function
Version: Boost 1.41.0 Severity: Problem
Keywords: Cc:

Description

From http://groups.google.com/group/comp.lang.c++.moderated/tree/browse_frm/thread/f66ee6174fb04762/a5c99eadde5a1e52?rnum=1&_done=/group/comp.lang.c%2B%2B.moderated/browse_frm/thread/f66ee6174fb04762/a5c99eadde5a1e52%3Ftvc%3D1%26#doc_b36422ac63363172


Peter Dimov

On Dec 2, 7:18 am, Sebastian Hauer <ha...@…> wrote: Hi, Recently I had the need for an efficient polymorphic function wrapper (aka delegate), so I looked at a few possible options such as boost::function and FastDelegate. I also came across tr1::function which I was blissfully unaware of until now, considering that the original proposal was from late 2002 (see:http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1402.html). While reading the proposal I noticed that a tr1::function can throw a bad_function_call exception if no target was assigned. I was just wondering for the rationale behind this design decision. In my opinion the fact that it throws goes against C++'s notion of "you only pay for what you use". I'm interested in hearing what your thoughts are on this.

This behavior doesn't need to impose a cost. An std::function (it's officially in C++0x) that hasn't been assigned a target may internally store a target function that throws bad_function_call. It need not test on every call (even though the test wouldn't impose much overhead compared to the indirect call that follows.)


Please add this to Boost.Function FAQ.

Change History (3)

comment:1 by Daniel James, 13 years ago

Component: Documentationfunction

comment:2 by Steven Watanabe, 13 years ago

I don't think that this would be a good idea to add to the FAQ, given that boost::function does not work this way.

comment:3 by Steven Watanabe, 12 years ago

Resolution: wontfix
Status: newclosed
Note: See TracTickets for help on using tickets.