Why is rand_r not defined in std?
c++, random, std
Solution
`rand_r` isn't part of the standard, it is a POSIX method.
rand_r(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
Conforming To
The functions `rand()` and `srand()` conform to SVr4, 4.3BSD, C89, C99, POSIX.1-2001. The function `rand_r()` is from POSIX.1-2001. POSIX.1-2008 marks `rand_r()` as obsolete.
Even better, forget about `rand` and `rand_r` and use `std::mt19937` with the correct distribution (see `<random>`).
Problem
I was wondering why I can't use `std::rand_r` when including `cstdlib`? Or, more generally, why are some functions in `cstdlib` in the global namespace but not in the `std` namespace?