Uh, where did you get that idea?
The ".h" headers were formally deprecated in 1998, the first standard,
because the committee unwisely, I'd say retardedly, assumed that the
intent of the clean "c..." headers would be fully supported and adopted.
That didn't happen, and will now never happen, since the committee
backed down a little from their high academic stance in 2011.
Likewise, it will never happen that the ".h" headers will disappear.
C++'s success is entirely founded on C compatibility, on leveraging C
libraries. That will not change. You can count on that much more than
you could count on core language features like `throw` specifications
and `export`-ed templates.
> so no luck
> in trying to make sure that those names *are* in the global namespace.
For C++11 names from the C library just include the relevant ".h"
header, very simple.
> (Although I think C++23 "undeprecates" those headers, so if you wait
> for it to become widely supported you can make sure.)
A simple remedy is to always include both of pair, "c..." and ".h".
That provides full guarantees about where the C++11 and earlier names
from the C library are defined, namely in both namespace `std` and the
global namespace. Guarantees that one can RELY on.
Unfortunately the committee didn't entirely give up their academic pipe
dream, and in C++14, C++17 and no doubt also in C++20, new names such as
`std::byte` and C11 esoteric math functions, were introduced in "c..."
headers only, with explicit exceptions that these names should not be
provided by ".h" headers. Sabotaging things just to score points for a
f...ing academic ideal. Politics everywhere, it's frustrating to have
the C++ standardization committee prioritize internal political goals to
that degree (one member even argued that Bjarne is to blame for all the
recent bad decisions, I think his words were "Bjarne is the problem").
- Alf