On 09/19/2012 01:12 AM, Paolo Carlini wrote:
Hi again,

On 09/18/2012 08:33 PM, Paolo Carlini wrote:
But I'm not surprised, frankly, I think the conflict is expected, *IF* (please check) TR1 says that those three overloads, for float, double an long double, must be declared in std::tr1 (likewise for all the other math functions) Now, given that our implementation has the C math.h injecting stuff in the global namespace - and that is legal - I would say that there is nothing to fix, maybe just a library testcase to tweak. As a matter of QoI the idea of having in tr1 using std::pow seems good, if this is what you are suggesting.
I found the time to go (again, hopefully it's the last time ;) through tr1/cmath, and now I understand why we have an issue with pow only, not with the other functions. Ok.

On the other hand - because of that comment which you mentioned earlier - I don't think we can just have using std::pow in namespace std::tr1. I'm coming to the conclusion that having instead an using ::pow, instead of the open coded pow (double, double) could work. Did you try that together with your front-end patch?
But I'm afraid this is still not completely correct, because if the user code has a using std::pow in the global namespace and then and include <tr1/cmath> the latter drags again in namespace std::tr1 the overloads pow (*, int) which we don't want there... grrrrr

Paolo.

Reply via email to