tw.log

https://twitter.com/kinaba のログ (twilog の方が便利です。)

<<newer (latest) older>>

20090730 12:23 .@NyaRuRu さんの今日のブログ読み中。「このオブジェクト(のみ)を俺は書き換えない=C++のconst」「このオブジェクト(から辿って辿りつくもの全て)を俺は書き換えない=Dのconst」「このオブジェクト(から辿りつくの全て)を誰も書き換えない=Dのinvariant」
20090730 12:24 と考えた時の"C++のinvariant"に当たるものが時々欲しくなるなーと思っている。ブログ読み中と言いながらあんまり中身に関係なかった
20090730 12:27 「C++では "int** p=0; const int**q = p;" はコンパイルエラーになります。なぜでしょう?」が、シンプルだけど、C++のconst周りだと一番難しかったというか意表を突かれた
20090730 23:25 .@NyaRuRu 仕様としては、constとして配置した値のコンストラクタでのthisを外に渡すと、そのポインタを使って操作された値はunspecified (12.1.5) になります。
20090730 23:33 他のひとはどうなのかわからないですけど、自分の場合、直接 const オブジェクトを作ることってあんまりしないかなあと。使うのは const& か const* か。その使い方に限っている限りでは、そんなに直感に反する動きはしないような…
20090730 23:47 .@NyaRuRu はい、"if the value of the object or ~~any of its subobjects~~ is accessed through thisから作った以外の左辺値" が unspecified になる条件でした
20090730 23:48 後半も原文を引用すると "through an lvalue that is not obtained, directly or indirectly, from the constructor's this pointer"
20090730 23:50 ところでD言語のinmmutable(旧invariant)オブジェクトもコンストラクタにmutableなthisポインタがやってきて、コンパイラ先生に怒られずに外に持ち出せるんですが、これWalter的にはどうなんでしょうか…

<<newer (latest) older>>

presented by k.inaba (kiki .a.t. kmonos.net) under CC0