
(and maybe 0 arguments as
well).
Ick, no. It's not obvious what it should mean.
A way to define it would be similar to what scheme/lisp do for operators applied to no arguments: they return the identity for the operation. For logical and and or, the identities would be #t and #f. For grammars, and_ would be something that always matches and or_ would be something that never matches, Maybe not particularly useful here, because probably nobody recurses on grammars this way, but very useful to have in scheme and lisp. But I think having the same behaviour as mpl::and_ and mpl::or_ is very important, so if one is changed the other probably should as well. The nice thing about this change is that it shouldn't make any code that was valid invalid (unless there's a way to have SFINAE effects visible).