Bruno Dutra wrote:
I agree that it does not have a "lazy backend" in the sense of my previous replies, but I don't see your point, ...
My point is that is_evaluable works on metafunctions regardless of whether
they have lazy backends or not. You were citing is_evaluable as a motivating
example that lazy backends are necessary, but it doesn't need them.
I do agree that for branching one does need laziness. So if you want, f.ex.
template
...but now at the expense of not being able to even provide a lazy version to the end user...
The lazy version is not hard to recover, but I'm still wondering whether
it's even necessary outside of if.
template class F, class... T> struct mp_defer
{
using type = F