2016-06-23 11 views
4

限り私が見ることができるように、observer_ptr提案はnullptr_tと等価比較およびクロスタイプ(すなわち、observer_ptr<T>observer_ptr<U>)比較(IN)を含みます。未処理のポインタとの比較はありません。既存のコードベースに徐々に導入しようとすると少し煩わしいものです。Tと< T >をobserver_ptr比較*

質問1:私は、私は現在の提案に正確にモデル化し、異なる名前空間にobserver_ptrの別の実装を使用しています(これらの演算子を追加する場合は、深刻な問題を予見してください、私はstd::observer_ptrにこれらを追加することはありません)?

フォローアップ:演算子を追加することは悪い考えであれば、生のポインタと比較するためにobserver_ptr上)(getを使用する方がよいでしょうか、明示的に生のポインタをラップする方が良いだろうobserver_ptr

編集:明らかに十分ではありません - なぜobserver_ptr<T>にこれらの比較演算子がないのか知りたいのですが。それが単に省略されたものであれば、私はそれらを私の実装に追加し、私の気持ちがいいと思います。その選択の背後に理由がある場合、私はそれが何であるか、そしてこれらの演算子をクラスに追加しないように気を配っているかどうかを理解したいと思います。

+0

@ Jarod42質問を分かりやすくしてくれてありがとうございます。 –

+0

私はウォルターブラウンだけがあなたの質問に答えることができると思う。 – ildjarn

+0

@ildjarnそれはそうかもしれないが、提案の少なくとも1行または2行はこれについて議論しているようだ。非常に初期の草稿のどこかに議論が埋もれていない限り(明示的にこれを解決するT *への暗黙的な変換についての議論が見つかりましたが、後で消えました) –

答えて

1

observer_ptr<T>T*と比較するスタンドアロンテンプレート関数を作成し、プロジェクトのどこでも使用します。その後、必要に応じて.get()またはctorなどを使用して実装を変更することができます。

+2

これは私の傾向ですが、observer_ptrがまだ指定していない理由を知りたいおそらくそれには理由があり、もし私がそうすれば何がうまくいかないかを知りたいのです。それは単なる省略であることが判明するかもしれないが、そうであれば、それは目立つものであるように思われる。 2回目の読んで - なぜ私はこれを自分自身にしますか?すでに 'operator =='という名前の関数があります。この関数はすでにコードベースで何百万回も使われています。私は質問が十分に明確で、私は余分なアイデアを探していないと思う、私はobserver_ptrのデザインを理解するために探しています。 –

関連する問題