<html>
Hi Folks-<br>
<br>
I've checked in some files that reflect the addition of additional traits
for the native types (int, float, etc.) as well as itk's itkScalar and
itkVector classes. The interesting file is itkNumericTraits that adds
traits to the native types by extending (via inheritance) from
std::numeric_limits<T> (defined in the include file
<limits>). You might want to look at the pre-defined traits in
numeric_limits. The documentation in MSVC looks like this (to give you
and idea):<br>
<br>
<font face="Courier New, Courier">template<class T><br>
class numeric_limits {<br>
public:<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>has_denorm</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>has_denorm_loss</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>has_infinity</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>has_quiet_NaN</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>has_signaling_NaN</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_bounded</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_exact</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_iec559</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_integer</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_modulo</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_signed</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>is_specialized</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>tinyness_before</font></b></u><font face="Courier New, Courier">
= false;<br>
static const bool
</font><font face="Courier New, Courier" color="#0000FF"><b><u>traps</font></b></u><font face="Courier New, Courier">
= false;<br>
static const float_round_style
</font><font face="Courier New, Courier" color="#0000FF"><b><u>round_style</font></b></u><font face="Courier New, Courier">
= round_toward_zero;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>digits</font></b></u><font face="Courier New, Courier">
= 0;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>digits10</font></b></u><font face="Courier New, Courier">
= 0;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>max_exponent</font></b></u><font face="Courier New, Courier">
= 0;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>max_exponent10</font></b></u><font face="Courier New, Courier">
= 0;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>min_exponent</font></b></u><font face="Courier New, Courier">
= 0;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>min_exponent10</font></b></u><font face="Courier New, Courier">
= 0;<br>
static const int
</font><font face="Courier New, Courier" color="#0000FF"><b><u>radix</font></b></u><font face="Courier New, Courier">
= 0;<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>denorm_min</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>epsilon</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>infinity</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>max</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>min</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>quiet_NaN</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>round_error</font></b></u><font face="Courier New, Courier">()
throw();<br>
static T
</font><font face="Courier New, Courier" color="#0000FF"><b><u>signaling_NaN</font></b></u><font face="Courier New, Courier">()
throw();<br>
};<br>
<br>
I don't know what half of this stuff means, but it looks like somebody
has thought this out and we can take advantage of it in itk.<br>
<br>
Can somebody on a Unix box see if they can compile the latest
check-ins?<br>
<br>
Will</font></html>