AMDG On 02/15/2018 03:58 PM, Peter Dimov via Boost wrote:
Zach Laine wrote:
Either way, that's up to the user, isn't it? If he wants to use > std::tuple and index with `get(expr, mp_int<0>())` or `get_c<0>(expr)` instead of `get(expr, 0_c)`, let him.
It could be, but that would be a much more complicated interface. As it is, the user need only specify an expression kind non-type template parameter and a Hana tuple to create a model of Expression.
The interface is not more complicated at all. The user just puts an std::tuple where he'd have put the hana::tuple. The implementation is more complicated. :-)
I know the reflex around here is to make everything as generic as possible, but does generalizing the tuple type actually buy you anything? The tuple type can't have different behavior in any meaningful way. The tuple is stored by value inside the the Expression object, so even if you have an external tuple of the same type, you still need to make a copy. The definition of the Expression concept doesn't allow non-intrusive adaptation. In Christ, Steven Watanabe