On Mon, 22 Mar 2021 at 02:35, Joel de Guzman via Boost
The Boost formal review of the Lambda2, authored by Peter Dimov, starts Monday, March 22, 2021 to March 31, 2021 (inclusive).
Documentation: https://pdimov.github.io/lambda2/doc/html/lambda2.html Source: https://github.com/pdimov/lambda2/
Lambda2 is a simple, but functional, C++14 lambda library. It takes advantage of the fact that the standard <functional> header already provides placeholders _1, _2, _3, and so on, for use with std::bind, and function objects such as std::plus, std::greater, std::logical_not, and std::bit_xor, corresponding to arithmetic, relational, logical and bitwise operators.
Please provide in your review information you think is valuable to understand your choice to ACCEPT or REJECT including Lambda2 as a Boost library. Please be explicit about your decision (ACCEPT or REJECT).
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?
It is not clear from the documentation what the capture behaviour of terminals is. I assume it's capturing rvalues by value and lvalues by reference? What about the expression tree itself, is it fully by value, and therefore safely copyable? Boost.Proto for example by default is binding everything by reference, meaning that you couldn't even store the expression in a variable. Is it avoiding this issue?