On 10 January 2017 at 14:35, Zach Laine
I'm trying to gauge interest in submitting a library to the review queue, It's an expression template library called Yap using C++14 and C++17 features, built on top of Hana.
It does not work quite the same as Proto, though of course it covers the same problem domain. My goal for the library was to cover the Proto functionality (while allowing the user to write less code than she would have had to with Proto) plus more functionality made easier by the new language features.
I've personally played a lot with expression templates, with and without Proto. Very quickly it becomes hairy, consumes huge amounts of memory that is never reclaimed, and takes very long to compile. I don't know how much better it is with Yap, but that's definitely a major problem and any new solution should try to address it. Symbols need to be short, and no evaluation should ever depend on the scalability of overloading or partial template specializations. The design used by Eigen or by some valarray implementations, while not necessarily the most elegant, is simple and scales well, but involves coupling the representation of the tree with its evaluation.