I include the c+ header <cmath>, rather than math.h and expect a function like sqrt to then be defined in std as std::sqrt, but to my surprise resharper kept insisting that std was redundant in writing std::sqrt
After some digging, it turns out that there is a sqrt in the global namespace and after digging even more, it comes from including <vector> which in turn includes xtgmath.h which defines sqrt in the global namespace.
Vector being a modern header (as in not named .h), this is a bit surprising to me.
I guess, apart from the annoying resharper notification, it doesn't really matter, since I can still explicitly write std::sqrt and be sure which I get, but then again, I could forget the std somewhere and effectively randomly be using a different implementation, which seems a bit off to me.
Am I seeing problems where none are? What is the proper way to deal with this?
Aucun commentaire:
Enregistrer un commentaire