Boost logo

Boost :

Subject: Re: [boost] [xint] Third release is ready, requesting preliminary review
From: Chad Nelson (chad.thecomfychair_at_[hidden])
Date: 2010-05-03 14:04:53

Hash: SHA1

On 05/03/2010 01:39 PM, vicente.botet wrote:

>>> The std::numeric_limits specialization defines functions that
>>> return 0 with a comment
>>> 00298 namespace std {
>>> 00299 template<>
>>> 00300 class numeric_limits<boost::xint::integer> {
>>> 00301 public:
>>> 00302 static const bool is_specialized = true;
>>> 00303
>>> 00304 static boost::xint::integer min() throw() { return 0; } // Not applicable
>>> 00305 static boost::xint::integer max() throw() { return 0; } // Not applicable
>>> If a value can not be given, shouldn't these be undefined?
>> If they weren't defined, could generic code work with them? The GCC
>> specialization for the int type includes all of the members, even the
>> ones that are only applicable to floating-point values, so I did too.
> How generic code could work if the returned values are not
> applicable, not significant. I would prefer a compile error than a
> runtime error.

if (numeric_limits<T>::is_bounded) {
    // do something using max() and min()

That wouldn't even compile if definitions of max and min weren't
provided, even though it's perfectly legal and useful.

>>> xint::integer is a signed integer. It is worth having an
>>> unsigned integer xint::uinteger? If not why?
>> I'd say the question is why have one, rather than why not. :-)
> Well imagine you have decimal numbers. You can define any integer
> using decimal number with 0 decimal digits. Does this means that you
> don't need a integer type?

Depends on the case. If floating-point numbers were just as fast and
efficient as integers, you might not. I've seen at least one programming
language where every number is a floating-point one, at least
potentially (I don't recall which one though... possibly Common Lisp,
which I haven't looked at in a long time).

>> There are only two advantages I know of to unsigned int over int:
>> you never have to check whether it's negative, and you get one
>> extra bit's worth of room, allowing you to work with larger
>> numbers. The second isn't a problem here, and the first can easily
>> be dealt with. Is there a use case where a signed integer wouldn't
>> be sufficient?
> Well if in my application the domain type is unsigned by nature, I
> don't see why I will define it as signed one if I can avoid it.

Because programmer time is a finite resource. Provide a good use case
for an unsigned large-integer and I'll add one, otherwise I'd rather
spend my limited time on more important things.
- --
Chad Nelson
Oak Circle Software, Inc.
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla -


Boost list run by bdawes at, gregod at, cpdaniel at, john at