Unwind-safe scope(failure)

D 言語の scope(failure) を極大級 C++ 闇魔法を総投入してでもエミュレートしたいが stack unwind のときにどうしよう問題.
8
前へ 1 ・・ 4 5
Akso de la Malbono @Cryolite

結論として, std::uncaught_exception は std::size_t を返すべき.

2012-03-23 00:22:08
Akso de la Malbono @Cryolite

@decimalbloat GCC ならもうこれでいーじゃーん.ぶーぶーぶー.

2012-03-23 00:26:08
Akso de la Malbono @Cryolite

@decimalbloat ところで結局 scope(success) も scope(failure) もダメっぽいですね.

2012-03-23 02:20:10
Akso de la Malbono @Cryolite

@decimalbloat std::uncaught_exception が bool じゃなくて std::size_t 返してくれれば良いんですが……. GCC 限定で,牛を監禁して「その時点で active な例外の数を得る」とか書かせることができないものか…….

2012-03-23 02:25:11
Akso de la Malbono @Cryolite

@decimalbloat しかし commit めんどくさい…….複数同時に commit をする手法もいくつか考えましたけれど C++ の lexical scope のモデルと相性があまり良くなくて直観的にならない…….

2012-03-23 02:27:55
でちまるさん(実際かわいい) @decimalbloat

@Cryolite スコープ単位なら,transaction { … } みたいな記法を強制することぐらいはできそうですが‥

2012-03-23 02:34:05
Akso de la Malbono @Cryolite

@decimalbloat デストラクタで暗黙に発動するのがどうもユーザ視点から見ると直観的ではないように思うので,あえてユーザが明示的に発動するようにするのはどうかと思っているんですが http://t.co/TscBklT1

2012-03-23 02:38:49
でちまるさん(実際かわいい) @decimalbloat

@Cryolite どうせ書くなら,明らかに書かないといけない(忘れるとコンパイルエラーになるのが理想)インターフェースにしてしまいたいところですね…

2012-03-23 02:52:24
でちまるさん(実際かわいい) @decimalbloat

牛を捕まえてactiveな例外の数を数えさせる簡単なお仕事

2012-03-23 02:54:51
Akso de la Malbono @Cryolite

@decimalbloat でも例外を投げる式というのはコンパイルエラー無しで書けてしまいますから,それは本質的に無理では…….

2012-03-23 02:57:02
でちまるさん(実際かわいい) @decimalbloat

@Cryolite うーんその逆にreturnも同様に普通に書けてしまうので,何かしらの形でcommit/rollbackを強制させるというのはやはり無理そうですね…

2012-03-23 03:22:45
でちまるさん(実際かわいい) @decimalbloat

あれ、いままで例外を検知する方法ばっかり考えてたけど、例外じゃなくてreturn検知すれば良くね?

2012-03-23 09:58:45
でちまるさん(実際かわいい) @decimalbloat

returnおよびスコープ終端への到達を検知したらcommitフラグを自動的に立てる方法思いついたし,やってみよう

2012-03-23 10:13:10
Akso de la Malbono @Cryolite

これでGCC限定でscope(failure)を完璧にエミュレートできる下準備がすべて整ったので、後は幽霊と実装競争である。(ただしかなり酔ってる上に私の実体はまだ近鉄奈良にある)

2012-03-23 21:13:11
でちまるさん(実際かわいい) @decimalbloat

そういえばC(ryさんがscope(failure)の実装競争を宣言していたらしいのですが終わったのでしょうか

2012-03-24 12:05:16
Akso de la Malbono @Cryolite

http://t.co/r2IhsMms ふむ.ふむ,っていうかこれ使って無限 unwind 再帰によってアクティブな例外で溢れさせるとどうなるんです?

2012-03-24 12:27:35
Akso de la Malbono @Cryolite

@decimalbloat っていぅかぁ~,もう実際に書かなくても実装余裕なの明らかだしぃ~?

2012-03-24 12:54:51
でちまるさん(実際かわいい) @decimalbloat

実装できるの分かって飽きた感があるコメント

2012-03-24 13:52:50
前へ 1 ・・ 4 5