由于删除了功能,请拨打电话?

时间:2016-07-25 10:30:06

标签: c++

在代码中

void Fnc( long = 10 ) { }
void Fnc( ) = delete;

int main( int, char** )
{
  Fnc( );

  return 0;
}

在Func调用时,我的编译器抱怨一个模糊的调用。救命!我不明白为什么会这样。

2 个答案:

答案 0 :(得分:4)

删除的函数不会被删除,但告诉编译器尝试调用它是一个错误。

您的Fnc();可以调用其中一个函数,编译器无法分辨您的意图。其中一个被删除并不重要,直到它是唯一的最佳匹配。那么这将是一个错误,而不是选择其他功能的提示。

答案 1 :(得分:4)

根据Delete Function Definition

  

定义表格" =删除;"表示该功能可能不是   用过的。但是,所有查找和重载解决都发生在之前   删除了定义。也就是说,它的定义是   删除,而不是符号;解决该定义的重载   不良形成。

这就是为什么你会收到模棱两可的电话。