2011-01-20 8 views
5

std :: weak_ptrのオペレータ<の議論を読んだ後、std :: hashを定義してstd :: weak_ptrの制御ブロックを使用することができない理由がわかりません。私はこれが標準委員会によって無視されたとも信じられません。誰かがトピックに関する関連する議論を読みましたか?C++のstd :: weak_ptrにstd :: hashが定義されていないのはなぜですか?

編集:STDのためのオペレータ<に関する議論:: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1590.html

答えて

3

のweak_ptrは、私は歴史と多少よく知って。そこがまた読むべき別の後に紙です:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2637.pdf

は、そして私は、この後の紙は現在のドラフトでは、実際にあるものであると信じています。要約すると、shared_ptrには、値ベースの演算子<()所有権ベースのメンバー関数owner_beforeがあります。 weak_ptrには後者のみがあります。

私の推測では、weak_ptrのハッシュサポートが落とされただけです。私の知る限り、weak_ptrに対するハッシュサポートは誰も提案していません。 C++ 0xを標準化し、問題を処理する時間とリソースが限られていて、間違いや欠落があることは間違いありません。

weak_ptrのハッシュサポートを追加すると思います。これは、owner_beforeと同様に行う必要があります。メンバー関数owner_hashをshared_ptrとweak_ptrの両方に追加します。私はそれがC++ 0xのためにこれを行うには遅すぎると思うが、これは妥当なTR2提案のようだ。

+0

日本が実際にこれを報告していることがわかります。 – SamB

2

日本はこれに不満を表明しており(lwg issue 1406参照)、その解決策として、his answerでHowardが提案したものが正確に提案されていることが判明しました。残念ながら、それは延期されました(恐らく時間的制約のため)。

関連する問題