Am 18.04.26 um 01:06 schrieb Alejandro Colomar via Mutt-dev:
Yeah, that's a compound literal, which doesn't exist in C++, so this
can't be used in C++ mode.  (This reminds me that I need to wrap the
musl code in !defined(__cplusplus).)  That's a bad language; I recommend
not using it: if you want the good things from C++, you need to use
modern C++, which strays away from C too much.  If you stay with the old
C++, what you get is some terrible dialect that doesn't get the benefits
of modern C nor of modern C++.


My recommendation on C++ differs from Alex's, and I find it quite usable and used right fixes a shitload of type bugs that you cannot fix in C, not even with _Generic -- and it has its places. It "strays from C too much" isn't really true, the common subset between C11 and C++23 is near complete, but if you're bound to "C99 and no other standard because we have commercial compiler FOO for target BAR" and some other target platform prevents you from going to C++17, alignment specifiers (C99 lacks them) and designated initializers (C++20 and older lack them) are out. Sometimes your compiler extensions save the day, but also encourage writing other non-portable code, so that's difficult.


Reply via email to