Boost logo

Boost :

Subject: Re: [boost] [mpl] multiset
From: pfultz2 (pfultz2_at_[hidden])
Date: 2015-03-07 17:19:41


> I don't find that defaulting to eager metafunctions is nicer working.
> It has been, at least for me, the source of a lot of pain because
> I was required to write helper metafunctions to branch lazily.
> Plus, when you use lazy metafunctions all the time, you almost
> never have to type `typename f<x>::type` (instead you just use
> `f<x>`), and so the syntax looks pretty much the same as when
> you use template aliases.

I agree. The big reason for having lazy evaluation is conditionals, not
necessarily lambdas and such. The problem is that Boost.MPL is half-lazy
evaluation, which is why things like `typename f<x>::type` need to be
sprinkled
everywhere.

> Regarding the usage of other concepts like Foldable, you say it
> was suggested that everything could be implemented around folds.

I am the one who made the suggestion, however, I didn't say just `Foldable`
alone. I said they could be implemented using `Foldable` and `Insertable`
concepts, as these are essentially dual categories.

Looking at this closer, I don't think there is an efficient way(or at least
I
have yet to find a way) to implement some algorithms(such as `drop`) using
just
these concepts. I think a better approach would be how Paul Mensonides
defines
generic data structures in his Chaos library. Its pretty simple and
lightweight.

> This is false in general, because stuff like `transform`

Well, `transform` could be implement using `Foldable` but it may not be the
semantics the user expects.

Paul

--
View this message in context: http://boost.2283326.n4.nabble.com/mpl-multiset-tp4672187p4672823.html
Sent from the Boost - Dev mailing list archive at Nabble.com.

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