C23 Is Finished
What’s in C23? Well, it’s everything […] present in N3047.
[…]
The new
constexpr
keyword for C means you don’t have to guess at whether that is a constant expression, or hope your compiler’s optimizer or frontend is powerful enough to treat it like one to get the code generation you want if VLAs with other extensions are on-by-default. You are guaranteed that this object is a constant expression, and if it is not the compiler will loudly yell at you.[…]
While default, plain compound literals have “block scope” (C) or “temporary r-value scope” (C++), with the new storage-class specification feature, you can control that.
[…]
Go read this to find out all about the feature and how much of a bloody pyrrhic victory [
#embed
] was.[…]
nullptr
and the associatednullptr_t
type in<stddef.h>
fixes that problem. You can specifynullptr
, and it’s required to have the same underlying representation as the null pointer constant inchar*
orvoid*
form. This means it will always be passed correctly, for all ABIs, and you won’t read garbage bits.[…]
If you ever used
__auto_type
from GCC: this is that, with the nameauto
.
Previously:
2 Comments RSS · Twitter
God, why can't they just leave it alone? C is supposed to be simple and most of the new stuff is design-by-committee supplication to C++ with which the language is fundamentally incompatible idiomatically.
Sebby, like what? IMHO, the nullptr and constexpr additions are great and fix what are essentially bugs in the language.