tag:blogger.com,1999:blog-3636872937372639901.post4371622226950508730..comments2024-03-27T21:24:43.584+09:00Comments on 本の虫: post-Madrid mailingの簡易レビュー江添亮http://www.blogger.com/profile/13387122818743087721noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-3636872937372639901.post-42206851921505224362011-04-15T11:52:24.068+09:002011-04-15T11:52:24.068+09:00> ... まあ言葉のあやみたいなものです。
うーん。明らかに意味が違ってしまっていると思い...> ... まあ言葉のあやみたいなものです。<br /><br />うーん。明らかに意味が違ってしまっていると思います。<br /><br />n3264 にある US-85 (= LWG-1374) の提案内容には "... can be destroyed<br />and can be the destination of an assignment. Anything else is<br />radioactive. ..." という記述があったので、おそらくここを間違って拾って<br />しまわれたのでしょう。<br /><br />あとはコメント欄でも、最初に返信してもらったコメントにより<br />"valid but unspecified state" について「それはユーザー定義の型に対する<br />要求です」などと返されているのも誤解の元になってしまいそうです。<br /><br />日本語での解説として規格のかわりに参照される人も(残念ながら)多いのが<br />現状ですので、できれば修正しておいてほしいと思っています。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-20139738131827346862011-04-15T04:11:44.125+09:002011-04-15T04:11:44.125+09:00通常の操作はどうなるか分からないというのは、まあ言葉のあやみたいなものです。
実際には、確かに操作...通常の操作はどうなるか分からないというのは、まあ言葉のあやみたいなものです。<br /><br />実際には、確かに操作はできます。江添亮https://www.blogger.com/profile/13387122818743087721noreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-53205633495844017032011-04-15T02:29:17.676+09:002011-04-15T02:29:17.676+09:00> ... と思っているのですか?
いいえ。そんなふうに思っていると取られるコメントは書いた...> ... と思っているのですか?<br /><br />いいえ。そんなふうに思っていると取られるコメントは書いた覚えが<br />ないですし、見直してもどこを読んでそう思われてしまったのかわかりません<br />でした。すいません。<br /><br />17.6.5.15 で標準ライブラリ定義の型のオブジェクトがムーブされた後の状態は<br />"valid but unspecified state" となることが定められ、 17.3.26 で<br />"valid but unspecified state" とは「オブジェクトの状態は未規定だが、<br />その型に期待されている操作はすべて動作する」状態であると定められて<br />います。この2つの定めをまとめると「標準ライブラリ定義の型の<br />オブジェクトがムーブされた後は、状態か未規定だが、その型に期待されている<br />操作はすべて動作する」ことが定められています。<br /><br />「その型に期待されている操作はすべて動作する」と定められているのに、<br />このブログエントリの解説では「通常の操作はどうなるか分からないが、<br />破棄可能かつ代入可能」と、規格のどの記述によるものか不明な、異なった<br />記述がされている点について、最初のコメントで指摘したのです。<br /><br />これでもまだこの解説(および別に立ててもらったエントリ)の記述「通常の<br />操作はどうなるか分からないが、破棄可能かつ代入可能な状態」が正しいと<br />おっしゃるのであれば、規格中のどの記述に対応するのか示していただけない<br />でしょうか?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-77645537705084477262011-04-15T01:58:22.960+09:002011-04-15T01:58:22.960+09:00ある文章が規格に含まれているからと入って、それがすべてに適用出来るものではありません。
ある場所に「...ある文章が規格に含まれているからと入って、それがすべてに適用出来るものではありません。<br />ある場所に「挙動は未定義である」と書かれていたとして、それが規格のあらゆる機能に対して適用出来ると思っているのですか?<br /><br />「挙動は未定義である」という文章は、「これこれの条件を満たした場合に」という条件がつくのです。<br /><br />17.3.26 [defns.valid]は、Valid but unspecifiedという状態の説明です。<br />オブジェクトの状態は未規定だが、その型に期待されている操作はすべて動作するという保証です。<br /><br />17.6.5.15 [lib.types.movedfrom]は、標準ライブラリで定義されているオブジェクトの保障すべき挙動です。<br /><br />MoveConstructibleとMoveAssignable要求に書いてあるのは、その要求を満たす型が保障すべき挙動です。江添亮https://www.blogger.com/profile/13387122818743087721noreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-4727123041973673682011-04-15T01:37:48.402+09:002011-04-15T01:37:48.402+09:00引き合いに出した 17.3.26, 17.6.4.15 ともに n3264 に含まれており、確認
で...引き合いに出した 17.3.26, 17.6.4.15 ともに n3264 に含まれており、確認<br />できます。この 17.6.4.15 は FDIS では 17.6.5.15 になっていました。指摘<br />しているこちらの解釈は n3264 の Rationale にある "The version for<br />user-defined types is weaker" という記述とも合致します。<br /><br />逆にお聞きしますが、「通常の操作はどうなるか分からないが、破棄可能かつ<br />代入可能な状態」というのは規格中のどの記述に対応するのでしょうか?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-58770746655316958992011-04-14T12:03:43.052+09:002011-04-14T12:03:43.052+09:00ちゃんとn3264を読みましたか?
そもそも根本的に間違っています。ちゃんとn3264を読みましたか?<br />そもそも根本的に間違っています。江添亮https://www.blogger.com/profile/13387122818743087721noreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-30440436478686844122011-04-14T10:51:58.388+09:002011-04-14T10:51:58.388+09:00> それはユーザー定義の型に対する要求です。
17.6.4.15 "Moved-f...> それはユーザー定義の型に対する要求です。<br /><br />17.6.4.15 "Moved-from state of library types" ではっきりと、特記のない<br />限り "valid but unspecified state" になるものという記述があるので、<br />ライブラリ内の型について定めたものだと読めます。<br /><br />逆にユーザー定義型のほうが、 "MoveConstructible requirements",<br />"MoveAssignable requirements" に変更が入って、ライブラリが明示的に要求<br />する操作以外は「どうなるかわからない」を認めているようです。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-3232090865810391752011-04-14T10:22:41.123+09:002011-04-14T10:22:41.123+09:00それはユーザー定義の型に対する要求です。それはユーザー定義の型に対する要求です。江添亮https://www.blogger.com/profile/13387122818743087721noreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-26133663924843869242011-04-14T09:23:29.319+09:002011-04-14T09:23:29.319+09:00> ... valid but unspecified stateになる。これは、通常の操作は...> ... valid but unspecified stateになる。これは、通常の操作は<br />> どうなるか分からないが、破棄可能かつ代入可能な状態である。<br /><br />17.3.26 の定義をざっと訳すと以下のようになるかと。<br />「オブジェクトの不変条件は満たされオブジェクトに対する操作は型に対して<br /> 定められたとおりに振舞うということを除き、不定なオブジェクトの状態。」<br />というわけで、「どうなるかわからない」ということはないですし、代入可能<br />とも限りません。Anonymousnoreply@blogger.com