我想阻止某些函数被调用。让我们忽略通过函数指针或其他东西来调用函数的情况,只关注直接函数调用的情况。我可以用= delete
来做到这一点。但是,发布的诊断信息不够丰富。我考虑使用static_assert
,您可以使用它提供自定义诊断消息。我在函数体中放置了一个static_assert(false, ...)
语句,希望在函数被调用时触发它。但是,事实证明,即使该函数未被调用,static_assert
也会失败。有什么建议么?用`static_assert`禁止函数
附加说明:该功能被无条件禁止。因此,std::enable_if
不适用于此。这种功能的动机是我想要防止某些使用,否则在超载解析的情况下可以很好地编译。所以我不能只删除这个函数。 deprecated
不是我想要的。我想要一个编译错误,而不是警告。
使用'= delete'。这就是它的目的。 –
['static_assert'](http://en.cppreference.com/w/cpp/language/static_assert)不能真正阻止函数被调用,它的目的是为编译时断言提供错误。你可能想看看例如而不是['std :: enable_if'](http://en.cppreference.com/w/cpp/types/enable_if)。 –
为什么函数存在,当它不是被称为?只需从您的代码库中删除它。 – cdonat