Actions

icon Post
text/html Subscribe
text/html Unsubscribe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vsipl++] [patch] RFA mercury's missing std::abs


  • Subject: Re: [vsipl++] [patch] RFA mercury's missing std::abs
  • From: Jules Bergmann <jules@xxxxxxxxxxxxxxxx>
  • Date: Fri, 11 Nov 2005 09:58:56 -0500



Stefan Seefeld wrote:
Jules Bergmann wrote:

This patch checks for missing std::abs overloads for float and double at configure time. If missing (and ::abs overloads exist), VSIP_IMPL_FIX_MISSING_ABS is defined, which causes vsip::mag and vsip::magsq to use a blend of vsip::abs and ::abs.

This should be more robust than relying on the order of <cmath> and <cstdlib> (which might break if users include standard headers before including vsip headers -- something I tend to do).

Comments?


Since we now understand exactly what is going wrong (i.e. the

namespace std { using ::abs;}

line is issued before the relevant declarations have been seen),
why don't we simply place such a using-directive close to our own
inclusion of <cmath> ? That would have the exact same effect as
including <cstdlib> after <cmath>, without relying on its header guards
not being active.

My initial reaction is that we shouldn't put stuff into std namespace because it may break some application's expectations. Of course, such apps are in trouble, since a change in cmath/cstdlib include order would break their assumptions.

If we do go with 'namespace std { using ::abs; }', we should still have a configure check and only much with std:: when necessary.

				-- Jules