我包含c +标题<cmath>
,而不是math.h,并期望像sqrt
这样的函数在std中被定义为std::sqrt
,但令我惊讶的是,resharper坚持认为撰写std
std::sqrt
多余
经过一番挖掘后,事实证明全局命名空间中有一个sqrt
,经过更深入挖掘后,它来自包含<vector>
,而xtgmath.h
又定义sqrt
{1}}在全局命名空间中。
Vector是一个现代标题(如未命名.h),这对我来说有点令人惊讶。
我想,除了烦人的resharper通知之外,它并不重要,因为我仍然可以明确地写std::sqrt
并确定我得到了什么,但是再一次,我可以忘记某个地方的std随机使用不同的实现,这对我来说似乎有点不对。
我看到的问题都没有? 处理这个问题的正确方法是什么?