Boost logo

Boost :

Subject: [boost] [review][Fit] Fit Review Results
From: Matt Calabrese (rivorus_at_[hidden])
Date: 2017-09-24 22:15:57

Hello everyone,

It is my privilege to announce that the Boost library count will once
again be incremented as Paul Fultz II's library Fit has been accepted
into Boost without conditions. Further details about this decision
follow, but before that I'd like to thank Paul for all of the hard
work he has put into Fit. Thanks also to everyone who participated in
the review, with additional thanks to Vicente who was the review
manager for the previous Fit review and who also provided a very
detailed review and discussion during this review period.


Complete Reviews Considered:
Zach Laine: Accept
Vicente J. Botet Escriba: Accept
John P. Fletcher: Accept
Robert Ramey: Accept
Jason Rice: Accept
Barrett Adair: Accept
Lee Clagett: Accept
Glen Fernandes: Accept
Louis Dionne: Accept

Partial Reviews/Discussions Considered:
Edward Diener
Andrea Bocci

Further Discussions (Previous Review):
Steven Watanabe
Peter Dimov
Vladimir Batov
Gavin Lambert
Rob Stewart
Bjorn Reese
Manu Sanchez
Artyom Beilis


Though not all responders reviewed every single aspect of the library,
the reviews together adequately covered everything that is necessary
for a decision to be made. This decision is made with additional
confidence coming from usage of the library by some reviewers going
back since during or before the initial review in early 2016.

Improvements Since Previous Review

This time around we received several more complete reviews than in the
previous review period making it easier to be confident in a decision.

A couple of notable changes since the 2016 review include:

* Improved documentation

* Default semantics for "capture" no longer try to determine whether
to capture by reference or by value based on the argument being an
lvalue or an rvalue (users can still get this via basic_capture)

* Improved ADL awareness (internal calls are qualified)

Throughout all of the discussions in this second review period, there
were no explicit rejections of the library as a whole, though there
were several recommendations from participants. A selection of those
are listed here, though no changes are strictly required for

Current Concerns

Design concerns:

* Inheritance from user-callables has some potential pitfalls

* Generated "infix" operators are "gimmicky" and don't add much
value/may cause confusion

* Placeholders should live in their own namespace

Documentation concerns (not a complete list):

* More examples requested

* It is not always clear what files need to be #included for certain
facilities in early examples

* Better rationale for ConstFunctionObjects

* Raw code is not linked from the examples

Suggested name changes from reviewers:

* Suggested rename of "partial()" to "partial_apply()" or "curry()"

* Suggested rename of "conditional()" to "invoke_first()" or "call_first_of()"

* Suggested rename of "apply" to "invoke"

* Refer to "Callables" instead as "Invocables" (due to C++17 direction)

* Library name "Fit" is not indicative of what it provides

Regarding the Author

Paul has been active in the Boost community for several years now. He
is aware of his responsibilities going forward and I am confident that
he will be a reliable maintainer for Fit for the foreseeable future
(or whatever the library may be called).

Comments on the Name Boost.Fit

Note that what I say here is my personal opinion as a member of the
community and does not necessarily reflect the opinions of others in
the community nor of those in the steering committee.

A few reviewers voiced that they would like to see a change of the
library name "Fit". While multiple people did suggest this, my opinion
is that this should be up to the author to choose whether or not he
will change the name before it is added to boost and so I do not think
it would be appropriate for us to strictly require or encourage such a
change. If the author found the arguments against the name compelling,
then he is welcome to change the name, but he should not feel
obligated to do so.

As a quick note on that, we have several high quality and highly
regarded libraries in Boost with names that may not directly tell
users what the library is for. Based on their popularity, I do not
believe that it has significantly negatively affected their usage or
ability to be found. A library name also may be important to an author
as a creative outlet and I think it would be... poor form us to force
such a change in this particular case and in other cases unless there
are very strong reasons (i.e. the name is overly or intentionally
misleading or there are legal concerns). I am not convinced that the
current name is misleading enough to strictly require a change. As for
existing precedent, some examples of libraries already in Boost with
names that do not directly tell the user what the library is for
include some of Boost's most highly regarded libraries such as
Boost.Spirit (including Qi and Karma), Boost.Phoenix, Boost.Wave,
Boost.Hana, and the recently accepted Boost.Beast.


Thanks again to everyone who participated in this review and in the
previous review, and once again, congratulations to Paul on his
library's acceptance into Boost.

-Matt Calabrese

Boost list run by bdawes at, gregod at, cpdaniel at, john at