C++20 Interesting Papers
Most of the big proposals for C++20 have been talked over quite a bit. But there are a few “hidden” ones that caught my eye.
As is normal when talking about “things in progress”, I must warn that these are just proposal. There is no guarantee they will show up in the final standard - or, if they do, that they look anything like the current draft of the proposals.
P1227R1
- Signed size function
THere has been a lot of noise over the last few years about the fact that
size_t
is unsigned and so the corresponding .size()
member functions on
containers returns an unsigned results. A quick internet search would suggest
that this is single-handedly the root of all evil in the software engineering
field.
But the new std::span
has a .size()
function that returns a signed value.
Proposal 1227 jumps on this to make the suggestion that a new ssize()
function be added to most containers - as well as a new std::ssize()
free
templated function.
I know I would use it.
Interestingly, Bjarne Stroustrup is (kinda) against this
proposal -
but only because it would also change std::span
to the same unsigned
behavior as other containers. He is definitely in favor of moving to sizes
being signed.
P1208R3 -
Source Code Information Capture
The standard has had the magical “macros” __LINE__
and __FILE__
for some
time as well as _func_
. This Proposal wants to bundle that magic up into a
structure that you can capture and move around.
I can’t say I’ve used __LINE__
and friends more than a few times, but I could see
where this would ease some tasks around creating good error messages in
libraries for logging, etc.
P1411R0 -
Please reconsider
What struck me about this is the sheer tenacity it shows. P1411 is actually a proposal about another proposal(P0052). P0052 has been brewing since 2013. As the author puts it …
p0052 ... is reaching an age it has to go to elementary school ...