Mega Code Archive

 
Categories / C++ Tutorial / Template
 

Template function to get maximum of two pointers

/* 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> #include <cstring> #include <string> // 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 two pointers template <typename T> inline T* const& max (T* const& a, T* const& b) {     return  *a < *b  ?  b : a; } // maximum of two C-strings inline char const* const& max (char const* const& a,                                char const* const& b) {     return  std::strcmp(a,b) < 0  ?  b : a; } int main () {     int a=7;     int b=42;     std::cout<<"\n\n" << ::max(a,b);      // max() for two values of type int     std::string s="hey";     std::string t="you";     std::cout<<"\n\n" << ::max(s,t);      // max() for two values of type std::string     int* p1 = &b;     int* p2 = &a;     std::cout<<"\n\n" << ::max(p1,p2);    // max() for two pointers     char const* s1 = "David";     char const* s2 = "Nico";     std::cout<<"\n\n" << ::max(s1,s2);    // max() for two C-strings } 42 you 0x22ff58 Nico"