/* 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. */ #ifndef SQRT_HPP #define SQRT_HPP // primary template to compute sqrt(N) via iteration template class Sqrt { public: enum { result = (I*I::result : I }; }; // partial specialization to end the iteration template class Sqrt { public: enum { result = N }; }; #endif // SQRT_HPP