特定の関数が呼び出されないようにしたい。関数ポインタなどを介して関数を呼び出すケースは無視して、関数を直接呼び出すケースだけに集中しましょう。でこれを行うことができます= delete
。ただし、発行された診断はあまり有益ではありません。static_assert
カスタム診断メッセージを提供できる を使用することを検討しました。static_assert(false, ...)
関数が呼び出されたときに実行されることを期待して、関数本体内にステートメントを配置しました。ただし、static_assert
関数が呼び出されなくても失敗することがわかりました。助言がありますか?
追記:無条件に禁止されている機能です。したがって、std::enable_if
ここでは適用されません。このような関数の動機は、特定の使用を防止したいということです。それ以外の場合は、オーバーロード解決で正常にコンパイルされます。したがって、機能を削除することはできません。deprecated
私が欲しいものではありません。警告ではなく、コンパイル エラーが必要です。