我想阻止某些函數被調用。讓我們忽略通過函數指針或其他東西來調用函數的情況,只關注直接函數調用的情況。我可以用= 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