Loops, Metaloops, & C++
By Roshan Naik, August 01, 2004
Metaloops are implemented in C++ using recursive template instantiation. Roshan examines ideas around encapsulating metaloops and considers their usefulness.
August, 2004: Loops, Metaloops, & C++
Listing 1
//Printing numbers in a range
// primary template - performs recusion
template <int start, int end>
struct print_range
{
static void eval (void) {
cout << start << " " ; // do work
print_range <start+1, end>::eval( ); // recurse with new // arguments
}
};
// template specialization - ends recursion
template < int end>
struct print_range <end ,end>
{
static void eval (void) {
cout << end << " " ; // no more recursion
}
};
print_range <1, 20>::eval( ); // A - print numbers 1 to 20