## Iteration Better Enums makes it easy to iterate over the values you have declared. For example, this: #include #include BETTER_ENUM(Channel, int, Red, Green = 2, Blue) int main() { for (size_t index = 0; index < Channel::_size(); ++index) { Channel channel = Channel::_values()[index]; std::cout << channel._to_integral() << " "; } std::cout << std::endl; will print "0 2 3". And this: for (size_t index = 0; index < Channel::_size(); ++index) { const char *name = Channel::_names()[index]; std::cout << name << " "; } std::cout << std::endl; will print "Red Green Blue". --- If you are using $cxx11, you can have much nicer syntax: ~~~comment for (Channel channel : Channel::_values()) std::cout << channel._to_integral() << " "; std::cout << std::endl; for (const char *name : Channel::_names()) std::cout << name << " "; std::cout << std::endl; ~~~ --- return 0; } %% description = Using Better Enums to iterate over all the constants of an enum, as well as over its names. Also shows the same with C++11 for-each syntax.