On Feb 4, 2020, at 11:02, Jonas Hahnfeld <hah...@hahnjo.de> wrote: >> That would be my impulse as well. It is not like this code appears to >> have notable drawbacks for the unafflicted platforms. > > Except for very funny overflows and negative signs if the value is too > large to fit into I64 ;-P > > unsigned long long a = 0xC0000000; > signed long long b = a; > printf("%d\n", b); > -> -1073741824
That's already an ingredient of this recipe. class Rational { ... U64 num_, den_; ... I64 numerator () const { return sign_ * num_; } Yum! — Dan