は、私は生のポインタで動作するテンプレートがあるとします。テンプレート以外の過負荷を削除するよりも、テンプレートインスタンシエーションを削除するのはいつですか?
template<typename T>
void processPointer(T* ptr);
私はこれがvoid*
ポインタと呼ばれるようにしたくありません。私には2つの選択肢があるようです。
void processPointer(void*) = delete;
または私はテンプレートのインスタンスを削除することができます:
template<>
void processPointer<void>(void*) = delete;
は、非テンプレート過負荷(角括弧付きなしfutzing)が容易である宣言を私は非テンプレート過負荷を削除することができます。代わりにテンプレートのインスタンス化を削除する理由がありますか?
+1、私は答えを自分でわからないので。テンプレートのインスタンス化を削除するのは、テンプレート全体のオーバーロードを考える傾向があるからです。後で、コードを読むとき(つまり、最小の驚きの原則に従う)、何が起こっているのかを理解する方が簡単だと思います。私は、何かを選択する技術的な理由があるかどうかはわかりません。 – utnapistim