This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.
Section: 29.5.4.5 [rand.eng.philox] Status: WP Submitter: Jiang An Opened: 2025-03-15 Last modified: 2025-06-23
Priority: Not Prioritized
View all other issues in [rand.eng.philox].
View all issues with WP status.
Discussion:
Philox engines don't seem to require floating-point operations or support from the operating system, so they are probably suitable for freestanding. However, as P2976R1 was finished before the adoption of P2075R6, these engines are not made freestanding yet.
[2025-06-13; Reflector poll]
Set status to Tentatively Ready after ten votes in favour during reflector poll.
[Sofia 2025-06-21; Status changed: Voting → WP.]
Proposed resolution:
This wording is relative to N5001.
Modify 29.5.2 [rand.synopsis], header <random>
synopsis, as indicated:
[…] // 29.5.4.5 [rand.eng.philox], class template philox_engine template<class UIntType, size_t w, size_t n, size_t r, UIntType... consts> class philox_engine; // partially freestanding […] using philox4x32 = see below; // freestanding using philox4x64 = see below; // freestanding […]
Modify 29.5.4.5 [rand.eng.philox], class template philox_engine
synopsis, as indicated:
namespace std { template<class UIntType, size_t w, size_t n, size_t r, UIntType... consts> class philox_engine { […] // inserters and extractors template<class charT, class traits> friend basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const philox_engine& x); // hosted template<class charT, class traits> friend basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>& is, philox_engine& x); // hosted }; }