Mega Code Archive

 
Categories / C++ Tutorial / Template
 

Template function to get the maximum of two values

/* 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.  */ // maximum of two int values #include <iostream> using namespace std; inline int const& max (int const& a, int const& b) {     return  a < b ? b : a; } // maximum of two values of any type template <typename T> inline T const& max (T const& a, T const& b) {     return  a < b ? b : a; } // maximum of three values of any type template <typename T> inline T const& max (T const& a, T const& b, T const& c) {     return ::max (::max(a,b), c); } int main() {     cout <<"\n\n" <<::max(7, 42, 68);     // calls the template for three arguments     cout <<"\n\n" <<::max(7.0, 42.0);     // calls max<double> (by argument deduction)     cout <<"\n\n" <<::max('a', 'b');      // calls max<char> (by argument deduction)     cout <<"\n\n" <<::max(7, 42);         // calls the nontemplate for two ints     cout <<"\n\n" <<::max<>(7, 42);       // calls max<int> (by argument deduction)     cout <<"\n\n" <<::max<double>(7, 42); // calls max<double> (no argument deduction)     cout <<"\n\n" <<::max('a', 42.7);     // calls the nontemplate for two ints } 68 42 b 42 42 42 97"