Hi Joerg,

At 09:27 03.02.2003, you wrote:
Hi Julius,

it looks as if your mail didn't find it's way to the boost ml. You wrote:

Sorry, I had a typo in the boost ml address. You included my message in your reply, so I don't send it again.


> (snipped)
IIRC the signatures 'float abs(float)' and 'double abs(double)' should be
part of <cmath>, which is included in <ublas/traits.hpp>.
I think they should, too, but they aren't. I don't know why, but the Standard (Table 81, Section, 26.5, p596) puts abs, div, rand and srand into cstdlib and all the others like sqrt and asin into cmath. The reason why ublas/type_traits.hpp still compiles is that Microsoft says "using ::abs" in cmath, although the Standard doesn't put it there.
By the way: VC 6 does have cmath and cstdlib headers, too. These headers just import math.h and stdlib.h within namespace std brackets. This apparently wasn't enough to convince boost to omit the BOOST_NO_STDC_NAMESPACE #define for VC 6.

It seems that probably for legacy reasons most cmath headers declare abs, at least as int abs(int), although it's seems to be against the Standard. Otherwise you would have had many compiler errors already: ublas::type_traits is fully specialized so they are always compiled. Still, I think you maybe should #include <cstdlib> in ublas/type_traits to be ready for a really conforming library implementation.

Julius

Julius Muschaweck

_____________________________________________________
OEC AG
Paul-Gerhardt-Allee 42
81245 Muenchen, Germany

Phone: +49 89 820050-30
Fax:   +49 89 820050-41
e-mail:    <muschaweck@oec.net>
Internet:   www.oec.net
______________________________________________________