Moving the kernel to modern C
Moving the kernel to modern C
Posted Mar 4, 2022 16:44 UTC (Fri) by atnot (guest, #124910)In reply to: Moving the kernel to modern C by dvdeug
Parent article: Moving the kernel to modern C
This is a really long tradition in C++ land. For example, afaict the only reason C++ attempts to use operators for streams in the first place is because the language itself was not rich enough to be able to express generic, type-safe string formatting well. It just so happened that the existing function overloading and a convenient left-associative operator let you cobble together a hacky workaround which then became standard.
Meanwhile nearly every other language decided to go and do what needed to be done to enable type safe string formatting instead. Including C++, which accidentally eventually enabled it to be written anyway, giving rise to {fmt} and then std::format.
Then they went and did the same thing again with iterators, sfinae, variant/visit/optional, etc.
I think the moral of iostreams is less that operator overloading is a bad idea, but that people will do absolutely horrible things if a language is not interested in finding ways to adequately address their needs.
