として、トランザクショナルメモリTS(ISO/IEC TS 19841:2015)がある既知の実験C++で:Is it enough to declare a function as transaction_safe, so they can be used thread-safe?なぜstd :: mapを注文し、std :: setを注文してtransaction_safeを作ることができないのですか?
そしてoperator[]
transaction_safe
として宣言されたが、コンテナだけのために:std::vector
、std::unordered_map
、std::unordered_multimap
、std::unordered_set
、std::unordered_multiset
、std::deque
- 撮影http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4514.pdf
23.4連想コンテナ[連想]
23.4.4クラステンプレート・マップ:n4514から23.4.4.1 [map.overview]で[地図]
23.4.4.1クラステンプレート・マップの概要[map.overview]
、開始と終了メンバーのすべてのバリアントの宣言 に "transaction_safe" を追加サイズがmax_sizeで空であることを示す の宣言に適用されます。
しかし、なぜoperator[]
がstd::map
ためtransaction_safe
とstd::set
として宣言(しかしunordered_map
/unordered_set
のためにそこにある)が存在しないのですか?
そして、なぜstd::map
とstd::set
ためbegin
とend
メンバー関数のすべてのバリアントの宣言に「transaction_safe」が追加されていますか?
begin
イテレータとend
はなく連想配列のために、std::array
、std::vector
又はstd::list
ために非常に必要です。 find
、at
、insert
、erase
とoperator[]
:連想配列で変更検索および検索または機能を必要としました。それらがなければ、意味をなさない。
はなぜのstd ::マップ命じたとstd ::を命じtransaction_safeを作るために招かないように設定されていますか? unordered_meow::operator[]
は無条件にトランザクションセーフであることが指定されていることを
'unordered_meow'の' operator [] 'に対する無条件のトランザクションセーフは欠陥であると強く思っています。 –