从命名空间中提取单个名称

Pulling in a single name from a namespace

本文关键字:单个名 提取 命名空间      更新时间:2023-10-16

对于以下代码,我只想从命名空间boo拉入mainPointoperator==的范围:

#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==,这将起作用,但它也会拉入boo中的所有其他operator==

我怎么能只拉进这个?

我问,因为对于上面的代码,我收到以下错误

source_file.cpp:18:26:错误:使用声明后预期为";" using boo::operator==(Point const& first, Point const& second);

你不能。using声明拉入名称,而不是单个实体。您也不需要拉入该特定operator==。在像p1 == p2这样的表达式中,p1p2的类型为Point,编译器将始终在声明Point的命名空间中搜索operator==。这称为依赖于参数的查找。