在哪些情况下可以省略命名空间限定符?

时间:2017-07-27 20:48:58

标签: c++ namespaces

编写这样的代码时

std::vector<int> test;
std::find(test.begin(), test.end(), 5);

我的IDE(带有Resharper插件的Microsoft Visual Studio 2017)告诉我第二行的命名空间限定符是多余的,代码可以像这样重写:

std::vector<int> test;
find(test.begin(), test.end(), 5);

它编译得很好。请注意,我绝不会使用using namespace stdusing std::find。这不仅适用于std命名空间,我在其他场合也见过它。

如果没有使用using,在哪种情况下省略了允许的命名空间限定符?语言标准中的定义是什么,它的基本原理是什么?

经过一些测试我的假设是,如果函数的一个参数与函数位于同一个命名空间中,函数的命名空间会自动推断,但我想看一些官方参考。

0 个答案:

没有答案