当搞乱全局命名空间限定符时,我注意到你实际上不需要std::
来模板函数,比如sort
和accumulate
。因此,如果您有一个与其中一个共享名称的函数,您可以执行::sort
之类的操作来消除歧义。但是,我不知道你可以在不说std::
的情况下调用这些函数。为什么会这样?
答案 0 :(得分:4)
至少在一般情况下,你确实需要对它们进行限定。
要了解原因,请创建一个包含7个整数的数组。在指向第一个和第一个结尾的指针上使用sort
:它只适用于std::
。
int foo[]={4,3,5,3,4,2,1};
std::sort(&foo[0], &foo[8]); // std:: required to compile
但是,如果参数中的类型来自namespace
,则在查找重载时会搜索namespace
中的函数。由于您经常使用通常位于std
和<algorithm>
s的迭代器,这使您相信std::
一般不需要:实际上您很幸运!