#ifndef foreach #define foreach_iter_var(var) var ## _iter #define foreach(var, val) \ for (typeof(val.begin()) foreach_iter_var(var) = (val).begin(), \ _ = (val).begin(); \ foreach_iter_var(var) != (val).end(); \ foreach_iter_var(var)++, _ = (val).begin()) \ for (typeof(*foreach_iter_var(var)) var = *foreach_iter_var(var); \ _ != (val).end(); \ _ = (val).end()) #endif