//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