Дело в том, что я уже использую для хранения 64-битные целые числа, поэтому для того, чтобы иметь возможность умножать два значения, мне понадобится доступ к 128-битному целому числу. В противном случае мне придется разделить каждое значение на два 32-битных целых числа и умножить их отдельно. (Либо так, либо сделать что-нибудь творческое с std::bitset; я еще не решил.)
Другими словами, мне нужно сделать что-то вроде следующего псевдокод:
Код: Выделить всё
typedef int64_t storage_t;
if (type_exits(int128_t)) {
typedef int128_t math_t;
const bool use_32_bit_algorithm = false;
} else if (type_exists(__int128)) {
typedef __int128 math_t;
const bool use_32_bit_algorithm = false;
} else {
typedef int64_t math_t;
const bool use_32_bit_algorithm = true;
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -available