Boost logo

Boost :

Subject: Re: [boost] [Fit] formal review - should we propose some parts to Boost.Config/Boost.Core
From: Paul Fultz II (pfultz2_at_[hidden])
Date: 2016-03-06 23:48:07


On Sunday, March 6, 2016 at 8:30:19 AM UTC-6, Louis Dionne wrote:
>
>
> > On Mar 6, 2016, at 04:59, Vicente J. Botet Escriba <vicent..._at_[hidden]
> <javascript:>> wrote:
> >
> > Le 06/03/2016 09:59, Andrey Semashev a écrit :
> >> On 2016-03-06 05:21, Vicente J. Botet Escriba wrote:
> >>>
> >>> Others could be considered also as function.hpp, lambda.hpp and
> >>> lift.hpp, as the macros are there to workaround some missing language
> >>> features, but those are much more specialized (Boost.Core?)
> >>
> >> I don't think Boost.Core is the right place for them as this library is
> for small generally useful components used by many libraries. The
> components you pointed out seem too specialized to me, and Boost.Fit looks
> like the right place for them.
> >>
> > Andrey, I was thinking in Boost.Core as these are language-like
> emulation features, like e.g. addressof, enable_if, explicit_operator_bool,
> ignorunused, no_exception_support, noncopyanble, scoped_enum, typeinfo.
> >
> > IIUC, BOOST_FIT_STATIC_FUNCTION try to fix a standard Core issue
> (pending issue 2104 in CWG) identified by Eric Nibler, with the a solution
> based on proposal's Eric (
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html). The
> library has also a macro BOOST_FIT_DECLARE_STATIC_VAR to do it for any data
> variable. I would like something that solves this problem in Boost.
> >
> > BOOST_FIT_STATIC_LAMBDA try to covers the C++17 feature constexpr
> lambdas.
> >
> > I suspect that Boost.Hana should have something like that. Louis, could
> you tell us how do you manage with these issues?
>
> I don’t manage these issues. Hana uses only hand-written function objects
> that can be marked constexpr, and
> lambdas are completely excluded from the codebase. There’s no way to
> properly workaround the limitations of
> constexpr lambdas, since the lambda’s operator() won’t be constexpr even
> with BOOST_FIT_STATIC_LAMBDA.
>

That is correct. It only allows for constexpr initialization of the lambda,
which is why I call it `STATIC_LAMBDA` instead of `CONSTEXPR_LAMBDA`. I
probably should add some more documentation to make it clearer.

Also note, that the Fit library only uses functions objects as well. The
only place that lambdas are used is for the lift operator.
 


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk