On 22 April 2014 14:42, Louis Dionne
Edward Diener
writes: [...]
Please consider making the your library as close as possible usage-wise to the current TMP library so as to make the transition for all the other libraries which use TMP as easy as possible.
Some of the core features of the (current) new library require diverging from the MPL in the following ways: - No more iterators. They do not bring anything performance-wise and they make the implementation of sequences considerably more complicated. - Laziness. This is a key point to improve expressiveness and could also improve performance in some use cases. I'm still investigating on that matter though. - No more implicit lambda expressions. These interact poorly, leading to counterintuitive behavior as in [1]. Usage of aliases could make the problem even worse.
There is more, but that is what comes to mind right now. Note that I did reimplement a (rather large) subset of the MPL in a backward compatible fashion before I came to these conclusions.
What is definitely possible is to make MPL data types (vector, int_, etc..) compatible with the new library. It should also be possible to make data types from the new library compatible with the old algorithms. That way, you could modernize some metafunctions without having to rewrite the whole metaprogram.
I would like to know what other people think about this; I'm making a community probe.
I like your proposed plan, the divergences seem reasonable.