Name: Anonymous 2010-10-28 18:25
class ascii_counter
{
public:
ascii_counter()
{
ch = ascii_counter::next_ascii<1>;
}
char next()
{
return (this->*ch)();
}
private:
char (ascii_counter::*ch)();
template<const char C>
char next_ascii()
{
ch = ascii_counter::next_ascii<(C + 1) % 256>;
return C;
}
};
int main()
{
ascii_counter counter;
char c;
while ((c = counter.next()))
std::cout << c << std::endl;
return 0;
}