ハワード・ヒナントは、 カスタムストレージタイプも使用できると説明しました。彼は例として「共有メモリ」に言及しています。unique_ptr
彼は大まかなアイデアを与えるだけです(これは簡単なイントロには問題ありません)。しかし、誰でも「カスタムストレージタイプ」(共有メモリかどうかに関係なく)の例を完成させることができますか?
共有メモリへの配置をサポートするため
unique_ptr
に、カスタムデリータにカスタムポインタタイプを含めることができます(通常、共有メモリアプリケーションでは実際のポインタではありません)。ポインタの動作をエミュレートするポインタと呼ばれるネストされた型を削除機能内に配置するだけで、一般にアクセスできます。
template <class T>
class MyDeleter
{
public:
class pointer
{
public:
friend bool operator==(pointer x, pointer y);
friend bool operator!=(pointer x, pointer y);
// ...
};
void operator()(pointer p);
};
void test()
{
unique_ptr<int, MyDeleter<int> > p;
MyDeleter<int>::pointer p2 = p.get(); // A custom pointer type used for storage
}
私はそれを// ...
拡張する必要があるとtest()
思います、そしておそらく実際の「カスタムストレージタイプ」の例でいくつかの追加のことをするでしょう。
誰かがどこにいるのか教えてもらえますか
- 実際にはすでにこのカスタマイズを使用しています、
- そしてその文脈では、
- どのカスタマイズコード、(
//...
おそらく) - そして、クライアントコードはそれをどのように使用しますか?(
test()
おそらく)