私はうまくいかないようですboost::ptr_unordered_map<uint32_t, const Foo>
- 基礎となる実装は、物事をにキャストしているように見えますvoid*
。
弾丸を噛んで、const_cast<Foo*>
アイテムを挿入するときにこれへのアクセスをラップするメソッドを作成する必要がありますか、それともここに欠けているものがありますか? const オブジェクト ( const Foo*
) へのポインターを格納する方法はありますか?
私はうまくいかないようですboost::ptr_unordered_map<uint32_t, const Foo>
- 基礎となる実装は、物事をにキャストしているように見えますvoid*
。
弾丸を噛んで、const_cast<Foo*>
アイテムを挿入するときにこれへのアクセスをラップするメソッドを作成する必要がありますか、それともここに欠けているものがありますか? const オブジェクト ( const Foo*
) へのポインターを格納する方法はありますか?
これは不可能のようです。
回避策は、へのアクセスをラップすることptr_unordered_map
です。insert メソッドは const auto_ptr を取り、それconst_cast<Foo*>
を挿入するために a を実行する必要があります。
要素を削除するときに auto_type をクライアント コードに戻す場合は、そこからポインターをアンパックし、それを const auto_ptr などに転送して、非 const 参照を漏らさずに所有権を明示的に転送する必要があります。
イテレータの動作を公開する必要がないため、私の使用例ではこれで十分です。純粋な単一要素の挿入/解放/検索です。