I find the article very interesting and informative but, honestly, of all of the approaches, I find the basic switch to be the most readable and likely the most maintainable, at least for this case.
The two major problems in C++, we as a comunity suffer from, are those that still insist using it as plain old C with some improvments, and those that do some kind of post-avant guard code, only understood by anyone coding every day in C++, that have as pastime reading ISO standard and compiler reference manuals, while attending C++ conferences.
One keeps the whole security discussion going on, while the other keeps an image that C++ is a language not worth learning.
The two major problems in C++, we as a comunity suffer from, are those that still insist using it as plain old C with some improvments, and those that do some kind of post-avant guard code, only understood by anyone coding every day in C++, that have as pastime reading ISO standard and compiler reference manuals, while attending C++ conferences.
One keeps the whole security discussion going on, while the other keeps an image that C++ is a language not worth learning.