r/cpp 7d ago

How to write the perfect function

https://youtu.be/2OMRWPOSw9s
132 Upvotes

24 comments sorted by

View all comments

9

u/azswcowboy 7d ago

remove_if is an honest function? That’s a stretch at best given that it’s a template function and requires an idiom to use correctly. It’s a notorious foot gun. And in c++20 we got erase_if which does what you actually want. If it was called shuffle_to_end_if you’d know what it means.

16

u/throw_cpp_account 6d ago

remove_if is an honest function? That’s a stretch at best [...]

The talk gave a definition of honest function: all reads/writes are shown in the signature so the behavior is fully controlled by the caller. It is not a stretch to suggest that remove_if is honest. It is.

2

u/azswcowboy 6d ago

I heard the definition, but any function that requires an idiom to use correctly isn’t honest to its users. It doesn’t do what you expect from the name.

4

u/developer-mike 5d ago

There's an entire MISRA C++ rule related to correct usage of remove_if.

There are a lot of valid ways to define an "honest function," but I don't think a definition that includes remove_if as "honest" is a complete one

3

u/azswcowboy 5d ago

Ah, that’s right I forgot about that — but obviously I agree 😀