为numeric_limit <t> :: max()指定无限制的限制?

时间:2016-12-23 15:08:06

标签: c++ c++03 numeric-limits

我有一个任意精度>> nil nil nil >> nil nil nil 类,它与Java的Integer或OpenSSL的BigInteger类似。我无法理解如何表达BIGNUM的无限制限制。

Stack Overflow有几个问题,询问它是否可行(如Is it ok to specialize std::numeric_limits for user-defined number-like classes?),以及一些使用基元的示例的答案,但我没有看到使用任意精度整数类的示例。我还访问了std::numeric_limits参考页面,但我不清楚在这种情况下我应该做些什么。

此时,我的内容是可以为我的numeric_limit<Integer>::max()专门化numeric_limit,并且可以将它放在标准命名空间中。我还需要专门研究所有Integer

如何为numeric_limits指定无限制的限制?

以下是GCC 4.2.1的numeric_limit<T>::max()(OS X机器)。

<limits>

2 个答案:

答案 0 :(得分:5)

标准说明了关于§18.3.2.4中的max成员函数的以下内容:

  

对于is_bounded != false

的所有专精都有意义

因此,您应该is_bounded false并在您的课程文档中指明在其上调用std::numeric_limits<T>::max没有意义。

答案 1 :(得分:1)

关于这个问题:

  

此时,我的内容是可以专门为我的整数

设置numeric_limit

答案是肯定的,因为:

  1. 它是标准模板的专业化,

  2. 它专门针对用户定义的类型。

  3. 来自cppreference:

      

    只有当声明取决于用户定义的类型并且专门化满足原始模板的所有要求时,才允许将任何标准库模板的模板特化添加到命名空间std,除非禁止这样的特殊化。