"max.h"
#include <string>
template<typename T>
inline T const& maxOfObject(T const& a,T const& b){
return a>b?a:b;
}
template<typename T>
inline T const& maxOfObject(T const& a,T const& b,T const& c){
return maxOfObject(maxOfObject(a,b),c);
}
template<typename T>
inline T* const& maxOfObject(T* const& a,T* const& b){
return *a>*b?a:b;
}
inline char const* const& maxOfObject(char const* const& a,char const* const& b){
return strcmp(a,b)>0?a:b;
}
//**********************************************
#include "max.h"
#include <iostream>
#include <string>
using namespace std;
int main(){
int a = 7;
int b =42;
cout<<maxOfObject(a,b)<<endl;
string s = "hey";
string t = "you";
cout<<maxOfObject(s,t)<<endl;
int *p1 = &b;
int *p2 = &a;
cout<<p1<<" "<<p2<<endl;
cout<<maxOfObject(p1,p2)<<endl;
char const* s1 = "David";
char const* s2 = "Nico";
cout<<maxOfObject(s1,s2)<<endl;
cout<<maxOfObject(7,42,68)<<endl;
const char* s11 = "Frederic";
const char * s22 = "Anica";
const char * s33 = "Lucas";
cout<<maxOfObject(s11,s22,s33)<<endl;
}