#include #include enum() Chars{A, B, C, D}; forall(E | CfaEnum(E) | Serial(E)) void baz(E) { for (e; E) { sout | label(e); } } void foo() { for (unsigned i = 0; i < countof(Chars); i++) { sout | label((Chars)fromInt(i)); } sout | nl; for (Chars e = lowerBound();; e = succ(e)) { sout | label(e); if (e == upperBound()) break; } sout | nl; for (Chars e; A ~ = D) { sout | label(e); } sout | nl; for (e; A ~ = D) { sout | label(e); } sout | nl; for (Chars e; A - ~ = D) { sout | label(e); } sout | nl; for (e; A - ~ = D ~2) { sout | label(e); } sout | nl; for (e; Chars) { sout | label(e); } sout | nl; baz(A); } void bar() { for (unsigned i = countof(Chars) - 1; i >= 0; i--) {} for (Chars e = lowerBound(); e <= upperBound(); e = succ(e)) {} for (Chars e = upperBound(); e >= lowerBound(); e = pred(e)) {} } int main() { foo(); }