#include #include /* * Credits to: * http://stackoverflow.com/questions/13150449/efficient-unsigned-to-signed-cast-avoiding-implementation-defined-behavior */ template Int uintToInt(Uint x) { if (x <= std::numeric_limits::max()) return static_cast(x); if (x >= std::numeric_limits::min()) return static_cast(x - std::numeric_limits::min()) + std::numeric_limits::min(); throw std::overflow_error("given value does not fit integer type"); }