[review] Fast track formal review of Forward library begins today
Hi all, The formal review of the Boost.Functional/Forward library, proposed by Tobias Schwinger, begins today : Boost.Functional/Forward provides decorator function objects to have an n-ary, generic function object accept both RValues and mutable LValues. An exponential number of overloads is needed with C98, so redundant solutions are highly undesirable. Functional/Forward is a reusable implementation asking to live in a central place in Boost. Download it from here: http://www.boost-consulting.com/vault/index.php?action=downloadfile&filename=forward.zip&directory=X-Files& http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=X-Files The documentation is included in the .zip file, in the usual place: forward/libs/functional/forward/doc/html/index.html What to include in Review Comments ================================== Your comments may be brief or lengthy, but basically the Review Manager needs your evaluation of the library. If you identify problems along the way, please note if they are minor, serious, or showstoppers. Here are some questions you might want to answer in your review: * What is your evaluation of the design? * What is your evaluation of the implementation? * What is your evaluation of the documentation? * What is your evaluation of the potential usefulness of the library? * Did you try to use the library? With what compiler? Did you have any problems? * How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? * Are you knowledgeable about the problem domain? And finally, every review should answer this question: * Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion. We're looking forward to your evaluation of this Boost candidate! John Torjo - Review Manager - -- http://John.Torjo.com -- C++ expert ... call me only if you want things done right
Hello John!
Hello Tobias!
Is there any link to the docs, where I can view them online? I would like
first see the docs online before I decide to download/install the lib.
Many thanks,
Ovanes
On 12/3/07, John Torjo
Hi all,
The formal review of the Boost.Functional/Forward library, proposed by Tobias Schwinger, begins today :
Boost.Functional/Forward provides decorator function objects to have an n-ary, generic function object accept both RValues and mutable LValues.
An exponential number of overloads is needed with C98, so redundant solutions are highly undesirable. Functional/Forward is a reusable implementation asking to live in a central place in Boost.
Download it from here:
http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=X-Files
The documentation is included in the .zip file, in the usual place: forward/libs/functional/forward/doc/html/index.html
What to include in Review Comments ==================================
Your comments may be brief or lengthy, but basically the Review Manager needs your evaluation of the library. If you identify problems along the way, please note if they are minor, serious, or showstoppers.
Here are some questions you might want to answer in your review:
* What is your evaluation of the design? * What is your evaluation of the implementation? * What is your evaluation of the documentation? * What is your evaluation of the potential usefulness of the library? * Did you try to use the library? With what compiler? Did you have any problems? * How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? * Are you knowledgeable about the problem domain?
And finally, every review should answer this question:
* Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion.
We're looking forward to your evaluation of this Boost candidate!
John Torjo - Review Manager -
-- http://John.Torjo.com -- C++ expert ... call me only if you want things done right
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Ovanes Markarian wrote:
Hello John! Hello Tobias!
Is there any link to the docs, where I can view them online? I would like first see the docs online before I decide to download/install the lib.
Hi Ovanes, http://www.torjo.com/tobias/ Best, John
Many thanks, Ovanes
On 12/3/07, *John Torjo*
mailto:john.groups@torjo.com> wrote: Hi all,
The formal review of the Boost.Functional/Forward library, proposed by Tobias Schwinger, begins today :
Boost.Functional/Forward provides decorator function objects to have an n-ary, generic function object accept both RValues and mutable LValues.
An exponential number of overloads is needed with C98, so redundant solutions are highly undesirable. Functional/Forward is a reusable implementation asking to live in a central place in Boost.
Download it from here:
http://www.boost-consulting.com/vault/index.php?action=downloadfile&filename=forward.zip&directory=X-Files& http://www.boost-consulting.com/vault/index.php?action=downloadfile&filename=forward.zip&directory=X-Files& http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=X-Files http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=X-Files
The documentation is included in the .zip file, in the usual place: forward/libs/functional/forward/doc/html/index.html
What to include in Review Comments ==================================
Your comments may be brief or lengthy, but basically the Review Manager needs your evaluation of the library. If you identify problems along the way, please note if they are minor, serious, or showstoppers.
Here are some questions you might want to answer in your review:
* What is your evaluation of the design? * What is your evaluation of the implementation? * What is your evaluation of the documentation? * What is your evaluation of the potential usefulness of the library? * Did you try to use the library? With what compiler? Did you have any problems? * How much effort did you put into your evaluation? A glance? A quick reading? In-depth study? * Are you knowledgeable about the problem domain?
And finally, every review should answer this question:
* Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion.
We're looking forward to your evaluation of this Boost candidate!
John Torjo - Review Manager -
-- http://John.Torjo.com -- C++ expert ... call me only if you want things done right
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org mailto:Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
------------------------------------------------------------------------
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- http://John.Torjo.com -- C++ expert ... call me only if you want things done right
Some users asked for the docs to be posted online. So, here they are: http://www.torjo.com/tobias/ John Torjo - Review Manager -
Hi all,
The formal review of the Boost.Functional/Forward library, proposed by Tobias Schwinger, begins today :
Boost.Functional/Forward provides decorator function objects to have an n-ary, generic function object accept both RValues and mutable LValues.
An exponential number of overloads is needed with C98, so redundant solutions are highly undesirable. Functional/Forward is a reusable implementation asking to live in a central place in Boost.
Download it from here:
http://www.boost-consulting.com/vault/index.php?action=downloadfile&filename=forward.zip&directory=X-Files& http://www.boost-consulting.com/vault/index.php?&direction=0&order=&directory=X-Files
-- http://John.Torjo.com -- C++ expert ... call me only if you want things done right
on Mon Dec 03 2007, John Torjo
* What is your evaluation of the design?
Looks good to me.
* What is your evaluation of the implementation?
Also looks good, although I don't understand the PP approach being used. It certainly looks different from the very fast one that Paul Mensonides put together for me once (attached at bottom), but I'm willing to believe it's better. Comments would be helpful. It should use compressed_pair to store the wrapped function object to take advantage of EBO.
* What is your evaluation of the documentation?
Nice, but terse. It would probably be helpful to many to add some more material explaining the forwarding problem.
* What is your evaluation of the potential usefulness of the library?
Huge
* Did you try to use the library? With what compiler? Did you have any problems?
No, n/a, and no
* How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
A quick reading
* Are you knowledgeable about the problem domain?
Yeah
And finally, every review should answer this question:
* Do you think the library should be accepted as a Boost library?
Absolutely. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com
John Torjo wrote:
* What is your evaluation of the design?
simple and effective. I'd like to see more tweakable parameters for specific uses. I frequently deal with different number expansions in a case to case basis. For example, is it possible to have arity 3 for function X and arity-5 for function Y? A single number seems wasteful if I'm sure that a certain use needs only a few. Is that possible?
* What is your evaluation of the implementation?
again, simple and effective.
* What is your evaluation of the documentation?
concise and sufficient for its purpose. I'd like to see more information on result type deduction though. It says: "Boost.ResultOf can be used to determine the result types of specific call expressions.". Ok, but what does that really imply? It would be good to have some information on this and its implications. For instance, for polymorphic function objects, do we have to supply all the nested /result/ metafunction for all overloads? How can the forward_adapter template know what to return? Etc. A more useful example would be one that actually returns something (instead of just void). I'd like to see an example for a polymorphic function.
* What is your evaluation of the potential usefulness of the library?
It's been in use in fusion for quite some time now. Very useful. Without this, and before this, we had to resort to lots of code duplication with tons of macro expansions everywhere.
* Did you try to use the library? With what compiler?
It's been part of fusion which is already well tested.
Did you have any problems?
Nope.
* How much effort did you put into your evaluation?
As main author of fusion, I do a review of all code and components going into fusion.
A glance? A quick reading? In-depth study?
See above.
* Are you knowledgeable about the problem domain?
Yes.
And finally, every review should answer this question:
* Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion.
Yes. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
on Tue Dec 04 2007, Joel de Guzman
John Torjo wrote:
* What is your evaluation of the design?
simple and effective. I'd like to see more tweakable parameters for specific uses. I frequently deal with different number expansions in a case to case basis. For example, is it possible to have arity 3 for function X and arity-5 for function Y? A single number seems wasteful if I'm sure that a certain use needs only a few. Is that possible?
It generates one template definition. You could generate a bunch of different templates for different uses but I don't see much advantage; it would probably slow down compilation overall. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com
David Abrahams wrote:
on Tue Dec 04 2007, Joel de Guzman
wrote: John Torjo wrote:
* What is your evaluation of the design?
simple and effective. I'd like to see more tweakable parameters for specific uses. I frequently deal with different number expansions in a case to case basis. For example, is it possible to have arity 3 for function X and arity-5 for function Y? A single number seems wasteful if I'm sure that a certain use needs only a few. Is that possible?
It generates one template definition. You could generate a bunch of different templates for different uses but I don't see much advantage; it would probably slow down compilation overall.
Hmmm... because you'll have different templates instead of one? But isn't the time of N instantiations of a single class template equivalent to the the time of instantiation of N different templates? (assuming same complexity). I really doubt this, without any numbers. And, even if it was true, I'd think that the exponential nature of expansion of the arities have a larger effect both with PP and in overload resolution. Those too should be a significant factor apart from template instantiations. Pondering... It would be interesting to see real numbers. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
On Dec 3, 2007 2:57 AM, John Torjo
* What is your evaluation of the design?
Clear enough. I would find the gref metafunction useful factored out in a separate include file (with a more descriptive name than gref like... forwardable<T>::type? lvalue_reference_to_which_is_bindable<T>::type :) ?)
* What is your evaluation of the implementation?
I agree with Dave on the EBO suggestion (and thanks for the compressed_pair lesson)
* What is your evaluation of the documentation?
Sufficient.
* What is your evaluation of the potential usefulness of the library?
Very useful. Although, I seem to run into cases where I want to have a forwarding function (not function object), or a forwarding operator. But maybe I'm wrong in preferring an actual function...
* Did you try to use the library? With what compiler? Did you have any problems?
GCC 4.0.1/darwin. I expanded the example from the docs a bit to where the forwarded function was polymorphic with varying return type. No problems.
* How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
Read the docs, studied the implementation until I mostly understood what it was doing, contemplated it a bit, and gave it a quick try.
* Are you knowledgeable about the problem domain?
I have a few bumps on my head, courtesy of the forwarding problem.
And finally, every review should answer this question:
* Do you think the library should be accepted as a Boost library? Be sure to say this explicitly so that your other comments don't obscure your overall opinion.
Yes - thanks for another great contribution. Stjepan
participants (6)
-
David Abrahams
-
Joel de Guzman
-
Joel de Guzman
-
John Torjo
-
Ovanes Markarian
-
Stjepan Rajko