Boost logo

Boost :

Subject: Re: [boost] [review][Fit] Review of Fit starts today : September 8 - September 17
From: Edward Diener (eldiener_at_[hidden])
Date: 2017-09-16 01:46:10

On 9/8/2017 7:02 AM, Matt Calabrese via Boost wrote:
> A formal review of the Fit library developed by Paul Fultz II starts
> today, September 8, and runs through September 17.
> A branch has been made for the review. You can find Fit for review at
> these links:
> Source:
> Docs:

I have some questions about Fit which I can not understand by reading
the docs:

1) Does Fit functionality work only with function objects as opposed to
callables in general ?

2) Is the purpose of BOOST_FIT_STATIC_FUNCTION only to create a function
object at global or namespace level ?

3) Does BOOST_FIT_STATIC_FUNCTION only accept a function object or does
it accept any callable ?

4) The documentation says that "BOOST_FIT_STATIC_LAMBDA_FUNCTION can be
used to the declare the lambda as a function". I am not sure what this
actually means since a lambda function is a function.

5) I do not understand the purpose of the pipable adaptor. What is the
point of using it ? It is mentioned as an alternative to Unified Call
Syntax but, while I understand the latter, I do not understandable how
pipable allows "extension methods", which is a large part of the purpose
of UFCS.

In general I am confused by what the requirements of Fit adaptors are.
This may be because the terms "function objects" and "functions" are
used in a way which does not follow standard C++ terminology as far as I
know it. I think I complained about this confusion in my comments
regarding Fit in the earlier review, but while the docs seem more
extensive than earlier, my confusion still remains.

> Anyone who is able to provide an assessment of the design,
> implementation, and/or docs can participate in this review. Usage
> experience is not absolutely necessary to give feedback, but is highly
> recommended if you are writing a review. Discussions about aspects of
> the library are welcome even if a complete review is not presented,
> though participants are asked to please state whether they would like
> to accept or reject the library before the deadline of September 17,
> paying close attention to the questions raised at the end of this
> email. The success of Boost is partially a result of the quality
> review process which is conducted by the community. You are part of
> the Boost community. We will be grateful to receive a review based on
> whatever level of effort or time you can devote.
> This is the second time that Fit will go through the review process,
> with the previous time being in March of 2016. The result of the
> initial review can be found here:
> In this second review, those who choose to participate should be as
> rigorous as they'd be in any other review, but are also encouraged to
> voice whether or not the concerns from March of 2016 were addressed.
> The following is a brief description of the library from its author:
> ====================
> Fit is a header-only C++11/C++14 library that provides utilities for
> functions and function objects, which can solve many problems with
> much simpler constructs than whats traditionally been done with
> metaprogramming.
> Fit is:
> Modern: Fit takes advantages of modern C++11/C++14 features. It
> support both constexpr initialization and constexpr evaluation of
> functions. It takes advantage of type deduction, varidiac templates,
> and perfect forwarding to provide a simple and modern interface.
> Relevant: Fit provides utilities for functions and does not try to
> implement a functional language in C++. As such, Fit solves many
> problems relevant to C++ programmers, including initialization of
> function objects and lambdas, overloading with ordering, improved
> return type deduction, and much more.
> Lightweight: Fit builds simple lightweight abstraction on top of
> function objects. It does not require subscribing to an entire
> framework. Just use the parts you need.
> Fit is divided into three components:
> Function Adaptors and Decorators: These enhance functions with
> additional capability.
> Functions: These return functions that achieve a specific purpose.
> Utilities: These are general utilities that are useful when defining
> or using functions.
> Requirements
> This requires a C++11 compiler. There are no third-party dependencies.
> This has been tested on clang 3.5-3.8, gcc 4.6-6.2, and Visual Studio
> 2015. Gcc 5.1 is not supported at all, however, gcc 5.4 is supported.
> Contexpr support:
> Both MSVC and gcc 4.6 have limited constexpr support due to many bugs
> in the implementation of constexpr. However, constexpr initialization
> of functions is supported when using the FIT_STATIC_FUNCTION and
> Noexcept support:
> On older compilers such as gcc 4.6 and gcc 4.7, noexcept is not used
> due to many bugs in the implementation. Also, most compilers don’t
> support deducing noexcept with member function pointers. Only newer
> versions of gcc(4.9 and later) support this.
> ====================
> Please provide in your review whatever information you think is
> valuable to understand your final choice of ACCEPT or REJECT including
> Fit as a Boost library. Please be explicit about your decision.
> Some other questions you might want to consider answering:
> - 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 which compiler(s)? 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?
> - Were the concerns from the March 2016 review of Fit addressed?
> More information about the Boost Formal Review Process can be found here:
> Thank you for participating!

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