std::generate_canonical
Gives std::generate_canonical a new specification that can never return 1.0.
signed char
unsigned char