对于以下代码,我只想从名称空间main
引入operator==
Point
boo
的范围:
#include <iostream>
namespace boo
{
struct Point {
int x;
int y;
};
bool operator==(Point const& first, Point const& second) {
return true;
}
}
int main()
{
using boo::operator==(Point const& first, Point const& second);
}
如果我刚刚using boo::operator==
这样做了,这会有效,但它也可以吸引operator==
中的所有其他boo
。
我如何才能进入这个?
我问,因为对于上面的代码,我收到以下错误
source_file.cpp:18:26: error: expected ';' after using declaration using boo::operator==(Point const& first, Point const& second);
答案 0 :(得分:6)
你做不到。 using-declaration 引入名称,而不是单个实体。你也没有必要引入那个特定的operator==
。在诸如p1 == p2
之类的表达式中,p1
和p2
具有类型Point
,编译器将始终在名称空间中搜索operator==
{{1}声明了。这称为argument-dependent lookup。