C++のアロケータはvoid型の特殊化を提供しています。これを行う特別な目的はありますか? void型のメモリを割り当てるのは意味がありません。C++のアロケータがvoid型の特殊化を提供するのはなぜですか?
答えて
マットAusternによるこの古いStandard Librarian列は、このちらほら含む一般的なアロケータのかなり徹底的な議論を、持っている:
我々は、ボイドについて何をしますか?時にはコンテナがvoid ポインタを参照する必要があり、リバインドメカニズムがほとんど私たちに必要なものを与えますが、 ではありません。私たちはmalloc_allocator :: pointerのようなものを書く必要があり、voidのインスタンス化が となるように malloc_allocatorを定義しましたので、うまくいきません。 sizeof(T)を使用し、T &を指します。 Tが無効の場合、いずれも合法ではありません。 問題は次のように簡単に解決できます。 malloc_allocatorをvoidに特化し、voidポインタを参照するために必要最小限の を除いてすべてを省略します。
malloc_allocatorは、Austernが彼の例で使用するサンプルの実装ですが、一般的な場合に当てはまります。
void
への参照ができないため、アロケータはvoid
に特化する必要があります。
誰かが実際に 'void 'のためにインスタンス化しても、それは問題にならないでしょうか? – Owen
アロケータ
- 1. エイリアステンプレート、部分的な特殊化および無効なパラメータの型がvoid
- 2. Qtがサブクラス化するクラスを提供するのはなぜですか?
- 3. 特殊なファイルパスを持つノードモジュールのコンポーネントをクライアント側に提供
- 4. テンプレートの特殊化が機能しないのはなぜですか?
- 5. なぜIDSはRSAMのCライブラリ関数を提供しないのですか?
- 6. コンパイル時の型の特殊化
- 7. なぜData.Time.ClockはDiffTimeとNominalDiffTimeを提供するのですか?
- 8. なぜshared_ptr <void>は特化していないのですか?
- 9. C++で部分テンプレートの特殊な特殊化を選択できません
- 10. C++のテンプレートパラメータと部分的な特殊化:強タイピングですか?
- 11. なぜ私はテンプレートクラスをC++で使用するために特殊化する必要がありますか?
- 12. 列挙型テンプレートの特殊化
- 13. Haskellの関数型特殊化
- 14. C++でのテンプレートの特殊化
- 15. xpathがhtmlの特殊文字を削除するのはなぜですか?
- 16. なぜstd :: atomic <integral>の特殊化は乗算と除算の代入演算子を提供しますか?
- 17. スカラー型のベクトル特殊化はVisual C++ 2015ではなくなりましたか?
- 18. JPA CriteriaQueryが更新クエリを提供しないのはなぜですか?
- 19. このクラスの部分テンプレートの特殊化コードが機能しないのはなぜですか?
- 20. 型/値エイリアスを提供する特性を持つScalaパッケージオブジェクト
- 21. なぜ反応するネイティブはボタンコンポーネントを提供しないのですか?
- 22. C++テンプレートの部分特殊化構文
- 23. C++テンプレートの特殊化問題
- 24. C++部分メソッドの特殊化
- 25. コンパイルするには関連性のない特殊化が必要ですか?
- 26. eaxに加えてorig_eaxが提供されるのはなぜですか?
- 27. iter_swapは特殊化できますか?
- 28. なぜ、シングルトンインスタンスがJavaのデフォルトで提供されていないのですか?
- 29. テンプレートの特殊化なしで関数の戻り値の型を変更しています。 C++
- 30. テンプレートの特殊化は
回答が有用であれば、このサイトではそれを受け入れるための良いフォームと考えられます。 – Gnawme