whyFunctionCannotOverLoadByReturnValue ?
/*eton@230703 whyFunctionCannotOverLoadByReturnValue.cc */
# include <iostream>
/*
* because cannot know the return type before confirm which funciton to be invoke.!!!
https://stackoverflow.com/questions/9568852/overloading-by-return-type
*
*
*/
using namespace std;
int fxxx(int a){
cout<<"int a="<<a<<"\n";
return 0;
}
float fxxx(unsigned int a){
cout<<"f int a="<<a<<"\n";
return 1.2;
}
class My {
public:
int getInt(int a)const{
cout<<"int a="<<a<<"\n";
}
char getChar(int a)const
{
cout<<"char a="<<a<<"\n";
}
};
class Proxy
{
My const* myOwner;
public:
Proxy( My const* owner ) : myOwner( owner ) {}
operator int() const
{
return myOwner->getInt(42);
}
operator char() const
{
return myOwner->getChar(43);
}
};
int main()
{
int a=fxxx(42);
float b=fxxx(43);
double c=fxxx(44);
My _m;
Proxy p(&_m);
a=int(p);
b=char(p);
//error: conversion from ‘Proxy’ to ‘double’ is ambiguous
//c=double(p);
return 0;
}