抜粋[function.objects]:メンバー以外の関数でdeleteを使用するポイントは何ですか?標準の20.12から
template <class T> reference_wrapper<T> ref(T&) noexcept;
template <class T> reference_wrapper<const T> cref(const T&) noexcept;
template <class T> void ref(const T&&) = delete;
template <class T> void cref(const T&&) = delete;
Iは、メンバ関数のコンテキストで=delete
を見慣れています。意図は、コンパイラによって提供された操作を禁止することです。例えば、クラスをコピー不可能または不可能にする。
しかし、この文脈では、意図は意図の文書であるように見えます。これは正しいですか?メンバー以外の機能に=delete
を使用することが望ましい、望ましい、または避けられない場合はありますか?
関数が引数のセットが大きすぎると考えるすべての場合に、この関数を使用できます。だからあなたは邪悪な議論を取り、それらに合った削除された機能を作りますが、より良いものです。たとえば、 'f(int *)'が '0'を受け入れるのを防ぐ(nullポインタに対して' nullptr'だけを受け入れる)ことができます。したがって、 'f(int)= delete;'オーバーロードを追加することができます。 –