Personally I'm not married to the current grammar, but we do need a plausible alternative, and we need it soon.An alternative syntax needs to have:- an obvious terminator (a comma is not that, especially for assert)- somewhere to do the preamble (pre:, post r:, assert: )- not be current valid syntax.Thinking out loud here, but could braces work?
auto f(auto const x, int const y) noexcept -> voidrequires integral<decltype(x)>pre {x > 0;y > x;}pre(axiom) {{x % 2 == 0};}post(audit, new) [r=return, x, y] { // seems like lambda-like captures fit in{r % x == 0};{r % y == 0};}{/* function body */assert {{ x > 0 };};}That looks pretty much like the grammar for the "requires" expression except with runtime values. Hm.....