On 3/5/2015 4:52 AM, Louis Dionne wrote:
Eric Niebler
writes: [...]
[*] My GSoC idea: my Meta library is built around variadic parameter packs, aka lists, and I think I'm happy with that. But it has been suggested that it could be built instead around the Foldable concept. The project would be to redesign Meta around Foldable types, and add other "containers" to Meta besides lists, like sets, and have the algorithms work with anything that is Foldable.
Thanks for the feedback, Eric. However, there's something that has been tickling me for a while with Meta. I am seeing some kind of convergence in Meta towards the MPL11, especially with the addition of the lazy operations. If you go down the Foldable road, then you would end up with something incredibly similar. The MPL11 does exactly that work of splitting sequences into Foldable, Iterable and other similar concepts. Frankly, my impression is that Meta is reinventing MPL11's wheel, and I would like to know whether (1) I am wrong (2) this is done unconsciously (3) this is done consciously because you think the MPL11 doesn't cut it.
Of course, it is the possibility of (3) that has been tickling me :-).
I found MPL11 and read some of its docs. Although there are many
similarities (naturally, we're both influenced by the MPL), I think
there is a fundamental difference. Meta isn't built around metafunctions
as folks here know them. The Meta library is built around template
aliases. The difference is illustrated in the way the quote feature is
implemented in the two libraries.
In MPL11, it's called "lift" and it looks like:
template class f>
struct lift {
template