在代码中
void Fnc( long = 10 ) { }
void Fnc( ) = delete;
int main( int, char** )
{
Fnc( );
return 0;
}
在Func调用时,我的编译器抱怨一个模糊的调用。救命!我不明白为什么会这样。
答案 0 :(得分:4)
删除的函数不会被删除,但告诉编译器尝试调用它是一个错误。
您的Fnc();
可以调用其中一个函数,编译器无法分辨您的意图。其中一个被删除并不重要,直到它是唯一的最佳匹配。那么这将是一个错误,而不是选择其他功能的提示。
答案 1 :(得分:4)
定义表格" =删除;"表示该功能可能不是 用过的。但是,所有查找和重载解决都发生在之前 删除了定义。也就是说,它的定义是 删除,而不是符号;解决该定义的重载 不良形成。
这就是为什么你会收到模棱两可的电话。