On 9/16/2017 2:14 PM, P F via Boost wrote:
On Sep 15, 2017, at 8:46 PM, Edward Diener via Boost
wrote: 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: https://github.com/pfultz2/Fit/tree/boost https://github.com/pfultz2/Fit/tree/boost Docs: http://pfultz2.github.io/Fit/doc/html/doc/ http://pfultz2.github.io/Fit/doc/html/doc/
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 ?
In general yes, but its not the case for every adaptor.
OK.
2) Is the purpose of BOOST_FIT_STATIC_FUNCTION only to create a function object at global or namespace level ?
Yes.
OK.
3) Does BOOST_FIT_STATIC_FUNCTION only accept a function object or does it accept any callable ?
It only works with function objects, which I should document its type requirements.
Please do.
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.
Maybe that could be worded better, but it lets you declare the lambda at global or namespace scope.
OK.
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.
That is, you want to add an extension method to a class so it can be called as `x.f(y)`. With UFCS, you can just declare a free function called as `f(x, y)` and then call it as `x.f(y)`, with the Fit library you would declare the function as pipable and then call it as `x | f(y)`.
Let us suppose I have a class: struct X { some member functions etc. }; Then I want to add a member function to class X with a prototype called void f(int) so I can call it as an extension method without modifying X. With UFCS in effect I create the free function: void f(X px,int py) { some implementation } and now if I have: X x; I can call: x.f(3); // Works with UFCS support successfully. Could you please show me the equivalent code that uses pipable in this same scenario ?
In general I am confused by what the requirements of Fit adaptors are.
Which ones?
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.
The type requirements for the adaptors are documented as either `ConstCallable` or `ConstFunctionObject`, which follows standard C++ definitions with an additional `const` requirement.
OK. Thanks !
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost