不完全な型で動作する非共有ポインターである標準ポインター クラス (またはブースト) はありますか? 私は C++11 標準と boost ライブラリを調べましたが、非常に便利なタイプのように見えますが、見つけることができません。
たとえば、スマート ポインターを使用して不透明な型を作成できるようにしたいと考えています。
class A;
wrap_ptr<A> some_func();
void other_func( A const & );
A
様々な用途に使用できる不透明タイプです。上記のインターフェースのユーザーは A の不完全な定義しか持っていませんが、ポインターを削除/リセットできるはずです。上記は a で実行できることはわかっていますがshared_ptr
、この特定のコードでは望ましくないオーバーヘッドがあります。unique_ptr
正しい所有権のセマンティクスがありますが、不完全な型では機能しません。理論的には、ラッパーはデリータへのポインタを持つオーバーヘッドのみを必要とするはずです。
C++11 またはブースト ライブラリにそのような型はありますか?
注: このタイプを簡単に作成できることは理解していますが、可能であれば標準タイプを希望します。基本的なスマート ポインター型である必要があるようです。
更新:unique_ptr
良いオプションではないようです。まず、構文のオーバーヘッドが相殺されます。第二に、カスタム デリーターで安全に使用できるとは確信していません。どのように機能するかを確認します。