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 7
// Using If_else<> to choose a type
// check if T's size is less than 2 bytes
template <typename T>
struct isSmall
{
enum { result = (sizeof(T) <2) };
};
template <typename T> class A { typedef ... result; };
template <typename T> class B { typedef ... result; };
// foo is of either of type A<T1>:: result or B<T1>::result
If_else < isSmall< T1 >::result ,
A<T1>::result ,
B<T1>:: result >::result foo;