-#define FB_AUTO_RR(x, y) auto&& x = y
-
-/*
- * The first AUTO should be replaced by decltype((c)) &
- * FOR_EACH_state2, but bugs in gcc prevent that from functioning
- * properly. The second pair of parens in decltype is actually
- * required, see
- * cpp-next.com/archive/2011/04/appearing-and-disappearing-consts-in-c/
- */
-#define FOR_EACH(i, c) \
- if (bool FOR_EACH_state1 = false) {} else \
- for (auto & FOR_EACH_state2 = (c); \
- !FOR_EACH_state1; FOR_EACH_state1 = true) \
- for (auto i = FOR_EACH_state2.begin(); \
- i != FOR_EACH_state2.end(); ++i)
+#define FOR_EACH(i, c) \
+ if (bool _FE_ANON(s1_) = false) {} else \
+ for (auto && _FE_ANON(s2_) = (c); \
+ !_FE_ANON(s1_); _FE_ANON(s1_) = true) \
+ for (auto i = _FE_ANON(s2_).begin(); \
+ i != _FE_ANON(s2_).end(); ++i)