Mega Code Archive

 
Categories / C++ Tutorial / Template
 

Primary template to compute 3 to the Nth and full specialization to end the recursion

/* The following code example is taken from the book  * "C++ Templates - The Complete Guide"  * by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley, 2002  *  * (C) Copyright David Vandevoorde and Nicolai M. Josuttis 2002.  * Permission to copy, use, modify, sell and distribute this software  * is granted provided this copyright notice appears in all copies.  * This software is provided "as is" without express or implied  * warranty, and with no claim as to its suitability for any purpose.  */ #include <iostream> // primary template to compute 3 to the Nth template<int N> class Pow3 {   public:     enum { result = 3 * Pow3<N-1>::result }; }; // full specialization to end the recursion template<> class Pow3<0> {   public:     enum { result = 1 }; }; int main() {     std::cout << "Pow3<7>::result = " << Pow3<7>::result               << '\n'; } Pow3::result = 2187