How can you detect if a class overloads a particular operator when you don’t have the source for the class? You can define the operator globally so that it accepts all user defined types:
class no_operator {};class Any{public: Any(...){cout<<"this is a placeholder for all kinds of UDTs"};};Disclaimer : ellipsis does not ensure type safety.no_operator& operator+(const Any &,const Any &) { cout << "operator not present"<
The above operator will be invoked for an add operation involving at least one UDT?if the operator + is not overloaded in the UDT. For example:
class Foo {public: Foo(){} Foo & operator +(const Foo& a) { cout<<"operator ovverloaded"<
This can be detected as follows:
if(strcmp(typeid(FooObj+i).name(),"class Foo")==0) cout<< "OVERLOADED" << endl; else cout <<"NOT OVERLOADED"<