|
Rationale: By the standard, cstdint guarantees these basic types
in std::, but *may* put them into the global namespace.
By including stdint.h directly, we guarantee that these types are
in the global namespace. stdint.h is
also a C++ standard header guaranteed as part of the C compatibility
support, thus toolchains should support this.
The proper(tm) way of going about this would mean either prefixing
[u]int[0-9]*_t with std:: everywhere where they are used (a chore)
or having a proxy header that includes cstdint and around 50
using statements. The latter sounds to me like a good approach for
toolchains that do not provide stdint.h and do not pollute global
namespace. If such a toolchain exists in the wild.
See discussion at
https://stackoverflow.com/questions/13642827/cstdint-vs-stdint-h
In practice, my toolchain's (gcc 14 on GNU) cstdint includes stdint.h
then drags those types into std:: as well.
|