[Bug libstdc++/125624] C++23: support of std::float16_t for std::uniform_real_distribution
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 5 19:34:53 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125624
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
In C++23 and earlier standards, [rand.req.genl] says:
"the effect of instantiating a template:
that has a template type parameter named RealType is undefined unless the
corresponding template argument is cv-unqualified and is one of float, double,
or long double."
So std::uniform_real_distribution<std::float16_t> is very explicitly undefined
behaviour.
C++26 changes this to:
If a template argument corresponding to a template parameter named RealType is
neither a standard floating-point type (6.9.2) nor a member of an
implementation-defined subset of extended floating-point types, the program is
ill-formed.
However, libstdc++ does not support this yet.
What you're trying to do is undefined behaviour, concepts and requires-clauses
can't help you.
More information about the Gcc-bugs
mailing list