Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yeah, C++ is just batshit insane.

> In C++, when you write an expression like a == b, the compiler chooses among available operator== implementations by comparing their match quality. A member function like a.operator==(b) usually has higher priority than a non-member function like operator==(a, b) — unless the types differ too much or are ambiguous.

This is the largest foot-bazooka ever. The point of operator overloading is that the operator in a given expression look natural, feel natural, and behave naturally (= function intuitively). If you have multiple possible operators that could apply, for the same syntax, then you're in a worse position than you originally were -- where an operator either did one particular thing, or didn't apply at all. What operator overloading does in practice is introduce ambiguity. Which is self-defeating. You are better off with C-style, named, non-overloaded functions.

You will never find this crap in actual math. "match quality" my ass.



> You will never find this crap in actual math

Sure you do. What’s 6/2(1+2)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: