Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2006-05-16 23:11:21

"Robert Ramey" <ramey_at_[hidden]> writes:

>>> Its even worse, there is way to write portable code which will
>>> generate any specific one of the "undefined" types.
>> numeric_limits<float>::quiet_NaN()
>> Is "reasonably portable."
> hmm - what's "reasonable portable" is hard to get a concensus on.

Let's put it this way:

  if numeric_limits<float>::has_quiet_NaN is true,
  numeric_limits<float>::quiet_NaN() is a portable way to get a
  non-signaling NaN of type float. If
  numeric_limits<float>::has_quiet_NaN is false, there's no
  representation of float with a non-signaling NaN value on the

This is exactly as portable as an int with value 100,000:

  if numeric_limits<int>::max() >= 100000, int(100000) is a portable
  way to get an int with value 10000 non-signaling NaN. If
  numeric_limits<int>::max < 10000, there's no representation of int
  with value 100000 on the implementation.

I hope you'll agree that an int with value 100000 is not too exotic,
and that a program that expects to be able to handle such an int ain't

Dave Abrahams
Boost Consulting

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