我有一个任意精度Integer
类,它很像 JavaBigInteger
或 OpenSSL 的BIGNUM
操作。我无法理解我应该如何表达numeric_limit<Integer>::max()
.
Stack Overflow 有几个问题询问是否可以这样做(例如是否可以将 std::numeric_limits 专门用于用户定义的类数字类?),以及一些使用原语的示例的答案,但我没有看到使用任意精度整数类的示例。我还访问了std::numeric_limits参考页面,但我不清楚在这种情况下我应该做什么。
在这一点上,我的外卖是可以专门numeric_limit
用于 my Integer
,并且可以将其放在标准命名空间中。我还需要专攻所有numeric_limits
。
如何为 指定无界限制numeric_limit<T>::max()
?
以下来自 GCC 4.2.1 <limits>
(OS X 机器)。
/// numeric_limits<int> specialization.
template<>
struct numeric_limits<int>
{
static const bool is_specialized = true;
static int min() throw()
{ return -__INT_MAX__ - 1; }
static int max() throw()
{ return __INT_MAX__; }
static const int digits = __glibcxx_digits (int);
static const int digits10 = __glibcxx_digits10 (int);
static const bool is_signed = true;
static const bool is_integer = true;
static const bool is_exact = true;
static const int radix = 2;
static int epsilon() throw()
{ return 0; }
static int round_error() throw()
{ return 0; }
static const int min_exponent = 0;
static const int min_exponent10 = 0;
static const int max_exponent = 0;
static const int max_exponent10 = 0;
static const bool has_infinity = false;
static const bool has_quiet_NaN = false;
static const bool has_signaling_NaN = false;
static const float_denorm_style has_denorm = denorm_absent;
static const bool has_denorm_loss = false;
static int infinity() throw()
{ return static_cast<int>(0); }
static int quiet_NaN() throw()
{ return static_cast<int>(0); }
static int signaling_NaN() throw()
{ return static_cast<int>(0); }
static int denorm_min() throw()
{ return static_cast<int>(0); }
static const bool is_iec559 = false;
static const bool is_bounded = true;
static const bool is_modulo = true;
static const bool traps = __glibcxx_integral_traps;
static const bool tinyness_before = false;
static const float_round_style round_style = round_toward_zero;
};