News for hackers. Stuff that matters.
Re:Maximal Min() and Max() by creeble on Thursday August 08, 2024 @11:43AM (#41192759)
Read the LWN comments.
Re:Maximal Min() and Max() by jonathrg on Thursday August 08, 2024 @12:07PM (#41193047)
They do not address the question at all. Please write an answer yourself.
Re:Maximal Min() and Max() by wahern on Thursday August 08, 2024 @03:22PM (#41195217)
The specific macro discussed in the article is using various GCC builtins to safely support mixed integer types; i.e. failing on unsafe type promotions or coercion, but otherwise working automagically. C++ std:min, by contrast, requires all the values to be the same type. AFAIU, to accomplish the same semantics in C++ would require either template metaprogramming, or doing something similar to what the current version is doing with macros and GCC builtins. A C++ solution might ultimately be cleaner, but I don't think there's anything in the standard C++ library that is a drop-in replacement.
Re:Maximal Min() and Max() by creeble on Friday August 09, 2024 @12:28PM (#41203310)
Nor would it perform well during compilation, which is very well discussed in the thread. C++ compilation is slow, like the macro expansion of the C versions of min and max.

It’s all in the thread, I don’t know how GP missed it.

Re:Maximal Min() and Max() by Groxx on Thursday August 08, 2024 @12:03PM (#41192972)
From a moderate skim, I'm not seeing much in there that really addresses this beyond FUD and over-simplification.

Which, I mean... it's the Internet. That's kinda expected. But if there's something specific you're seeing, could you link to it? I'm curious as well what the "stick to C" crowd's reasons are. "C plus this one feature of C++" seems rather defensible at a glance (ignoring the social difficulty in choosing which feature), but I'm sure it's much more complicated than that in practice.

Re:Maximal Min() and Max() by dzaima on Thursday August 08, 2024 @12:34PM (#41193389)
Even if a project can choose some specific feature(s) to switch to C++ for, it'd severely reduce the barrier for adding reliance on more features; why did feature X get a pass, but not this other one? And C++ has a lot of such potential features that are harmless and easy to justify at their best, but can become headaches when used more broadly, requiring everyone and everything to deal with them.
Re:Maximal Min() and Max() by Groxx on Thursday August 08, 2024 @01:55PM (#41194341)
The social aspects are very large and it wouldn't surprise me at all if that was by far the main reason... but that's much less of an issue in a kernel-like context where there are already oodles of rules beyond "write valid C code". They can and do impose significant limitations on the languages they use, successfully, for decades. Seems like they'd be able to do that with C++ too.
Re:Maximal Min() and Max() by jonathrg on Thursday August 08, 2024 @12:36PM (#41193419)
There is a comment purporting to show a difference between compilation speeds in C and C++ which uses iostream for the C++ example, which completely misses the point. Sure C++ has a lot of warts, but in terms of compilation speed it should be completely reasonable to use a few simple template functions.
Re:Maximal Min() and Max() by Groxx on Thursday August 08, 2024 @01:50PM (#41194293)
Yeah, that's the main thing I saw and it's just plain completely wrong. The fact that C++ can more easily bloat into large build times, and people frequently make larger-build-time projects in it, implies absolutely nothing about its behavior in replacing simple macros like max/min.

There's ample evidence that it'll build just a fast as C there, so it's not an issue in this context, and that both can build quickly with care. That's kinda the point of C++: you can write plain C code plus [this one thing] and you basically don't pay for the rest, and it generally achieves that.