From: John Maddock (john_at_[hidden])
Date: 2005-06-29 06:57:11
Function Types library by Tobias Schwinger
Available from the sandbox at:
or the zip file is:
This library provides a metaprogramming facility to classify, decompose and
synthesize function-, function pointer-, function reference- and member
function pointer types. For the purpose of this documentation, these types
are collectively referred to as function types (this differs from the
definition and redefines the term from a programmer's perspective to refer
to the most common types that involve functions).
The classes introduced by this library shall conform to the concepts of the
Boost Metaprogramming library (MPL).
The Function Types library enables the user to:
* test an arbitrary type for being a function type of specified kind,
* inspect properties of function types,
* view and modify sub types of an encapsulated function type with MPL
Sequence operations, and
* synthesize function types.
This library supports variadic functions and can be configured to support
non-default calling conventions.
The function types review took place between the 6th and the 20th June 2005.
There were 4 reviews, three reviewers made tentative "yes" votes. The
review manager abstained.
The reviewers took the view that the library was useful, but had issues
* The naming and organisation of some components (particularly the tag
* The scope of the test cases.
* The documentation: in particular many reviewers had difficulty
understanding the motivation behind the library, and felt that the
documentation would put off many potential new users. Tobias and the
reviewers alike have tried hard to correct this, but it's apparent that
writing really clear documentation for this library is actually quite a
difficult task (basically we've all been struggling to come up with really
easy to understand terminology that can be applied here, what the library
does isn't that hard to understand once you have "got it", but there is a
lack of accepted terminology for what the library does which makes it hard
to write documentation that will allow a newbe to "get it" in the first
Tobias has been very proactive in dealing with the issues that have come up
during the review period, and has already published a list of proposed
changes to address the reviewers concerns:
There was some concern on the part of the review manager that not many
reviews were submitted for this library. We don't have a hard and fast rule
on how many positive reviews are enough to justify inclusion of a library,
but there does seem to have been a decline in the number of reviews received
for libraries recently. Partly this may be down to the fact that we have a
release going on as well at present, also this library is probably mainly of
interested to other library authors (who are busy with the release!). It's
also possible that the problems some reviewers had in grasping all the
concepts behind the library put some people off from contributing (this
issue will be addressed by Tobias' proposed documentation changes however).
So..... after some consultation with the other moderators (on how many
reviews constitute "enough").... the result: the function types library is
accepted into Boost, subject to a further mini-review to be conducted at a
later time convenient to Tobias. The "mini review" will be conducted
independently to the full review process; it's purpose will not be to reopen
issues already addressed at this review, but to give reviewers a chance to:
* Check the reorganised/renamed classes: there are enough changes here to
make the library look-and-feel different even if the changes are actually
largely cosmetic. It's important that we get this right, as meta-function
naming can have a large (albeit subjective) impact on usability.
* Check the revised documentation. As noted above, several people have had
an attempt at revising this, and it's surprisingly hard to get right. There
are enough changes coming here to make the new docs substantially different
from those that the reviewers looked at.
[function types review manager]
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk