C++ clang vs gcc:带运算符重载的函数查找

C++ clang vs gcc:带运算符重载的函数查找,c++,gcc,clang,C++,Gcc,Clang,在clang vs gcc trunk(截至2020年3月)中,我在函数查找中发现了奇怪的行为(您能告诉我这实际上是如何调用的,它属于重载解析吗?) 使用运算符时 #包括 模板 void blub(标准::向量常量和i){ -一,; //getsize(i);//这在gcc中也失败 } int运算符-(std::vector const&i){ 返回i.size(); } int getsize(标准::向量常量&i){ 返回i.size(); } int main(){blub(std::ve

在clang vs gcc trunk(截至2020年3月)中,我在函数查找中发现了奇怪的行为(您能告诉我这实际上是如何调用的,它属于重载解析吗?) 使用运算符时

#包括
模板
void blub(标准::向量常量和i){
-一,;
//getsize(i);//这在gcc中也失败
}
int运算符-(std::vector const&i){
返回i.size();
}
int getsize(标准::向量常量&i){
返回i.size();
}
int main(){blub(std::vector{1});}
当使用像
getsize
这样的函数而不是一元运算符时,gcc和clang都不会编译,但是使用运算符-,gcc编译,clang不会编译。 叮当声就在这里,不是吗


请参见

我将godbolt链接用作isGCC错误。答案和这里一样,太棒了。你知道是否已经有bug报告了吗@StoryTeller UnslanderMonicacould't find one.@CaptainGiraffe-将它放在第一位可以在普通查找中使用。所以它应该在重载集合中。当它第二次出现时,只有ADL可以找到它,但根据定义,ADL无法找到它。