devxlogo

Detect an Operator Overloading a Class

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"<

Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.

See also  How Seasoned Architects Evaluate New Tech

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

©2025 Copyright DevX - All Rights Reserved. Registration or use of this site constitutes acceptance of our Terms of Service and Privacy Policy.