253

With a bit of fiddeling you can use every kind of bracket to basically make function calls in c++

Here are the links to the snippets, all compile and run

Rust: https://godbolt.org/z/bM3d7bG14

OCaml: https://godbolt.org/z/17oMv83zx

C++: https://godbolt.org/z/9Y3WfoE1W

you are viewing a single comment's thread
view the rest of the comments
[-] red_tomato@lemmy.world 31 points 1 week ago

Operator overloads is something that sounds like a good idea until you experience them firsthand. Just properly name your functions for fuck’s sake.

[-] glibg10b@lemmy.zip 4 points 5 days ago* (last edited 5 days ago)

Like all of the footguns in C++, it's only a problem if the codebase uses it wrong. When used correctly (i.e. only when behaviours mimic built-in types, and without side effects), it helps makes code more readable

Don't do what numpy does, which is to define * for two arrays. Without learning the library, you wouldn't know whether this performs element-wise multiplication, matrix multiplication, dot product or cross product. Worse yet, it behaves differently to Python's built-in * for lists (which is also bad), which concatenates N copies of the list

[-] zerofk@lemmy.zip 7 points 6 days ago

Every time I use a language that doesn’t have operator overloading I wish I was using C++. It’s absolutely maddening to have to read and write things like “end.subtract(start)”.

[-] xigoi@lemmy.sdf.org 4 points 6 days ago

Clearly you’ve never had to read code like

entity.position = vector_algebra::vector2_add(entity.position, vector_algebra::vector2_scale(entity.velocity, dt));
[-] red_tomato@lemmy.world 3 points 6 days ago

I prefer Java style:

entity.position = entity.position.add(entity.velocity.scale(dt));

Not hard to read.

[-] balsoft@lemmy.ml 16 points 1 week ago

Operator overloading is awesome in a functional language. Haskell allows for a lot of creative stuff with operators, but since they can't have side effects, must conform to predictable types, and have specific requirements they are somewhat understandable. Idris is also very ergonomic when it comes to operators.

C++ allowing a library to override the + operator with system("rm -rf /") is a lot less awesome.

Honestly, I'm glad to have them, it can make a number of things simpler. For instance, a program I wrote had a number of duration fields that had to be stored in XML files and updated every once in a while. It was something that had to occur very often in the code: add a value to the duration, set that value in the XML data, and save the XML file. So I created a class that stored the date/time value and a pointer the XML element (it could be assumed that nothing else would be changing the value in the XML file and if it did, then that change should be overwritten) and overloaded the += operator (among others), so then all I needed was to create the DurationField object, and then I could go durationFieldX += time2 - time1 for instance. I could abstract all the logic away and make it very clear and easy to write. Could I have made it so that I have to to durationFieldX.add(time2 - time1)? Of course I could have. But IMO that variant is less neat and less readable.

[-] MangoCats@feddit.it 8 points 1 week ago

I'll jump on your unpopular side. With a decent IDE you should be able to point/click and decode what any operator is doing in any context. If I have two vectors, or quaternions, and I want to operate on them, why should I be forced to pass them to a standard function instead of clearly seeing what I'm doing. If you can't be bothered to know the types of your variables in a strongly typed language... IDK.

[-] Chrobin@discuss.tchncs.de 6 points 1 week ago

As a computational physicist, I appreciate operator overloading IF used properly.
Example of a good use: + for matrix addition
Example of a bad use: left shift operator << as a pipe
I still don't understand who's in the C++ committee that they would choose this garbage over a function

[-] tyo_ukko@sopuli.xyz 3 points 5 days ago* (last edited 5 days ago)

My theory is that they came up with the concept of operator overloading (or copied it elsewhere and were exited) and decided the best place to demonstrate and sell the concept is in the most used console input and output standard functions.

Edit: I realize my contempt for this decision is not evident here, so let me add that it was a terrible choice in their part indeed.

this post was submitted on 30 Oct 2026
253 points (98.1% liked)

Programmer Humor

33999 readers
183 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 3 years ago
MODERATORS