Unwind-safe scope(failure)
結論として, std::uncaught_exception は std::size_t を返すべき.
2012-03-23 00:22:08@decimalbloat ところで結局 scope(success) も scope(failure) もダメっぽいですね.
2012-03-23 02:20:10@decimalbloat std::uncaught_exception が bool じゃなくて std::size_t 返してくれれば良いんですが……. GCC 限定で,牛を監禁して「その時点で active な例外の数を得る」とか書かせることができないものか…….
2012-03-23 02:25:11@decimalbloat しかし commit めんどくさい…….複数同時に commit をする手法もいくつか考えましたけれど C++ の lexical scope のモデルと相性があまり良くなくて直観的にならない…….
2012-03-23 02:27:55@Cryolite スコープ単位なら,transaction { … } みたいな記法を強制することぐらいはできそうですが‥
2012-03-23 02:34:05@decimalbloat デストラクタで暗黙に発動するのがどうもユーザ視点から見ると直観的ではないように思うので,あえてユーザが明示的に発動するようにするのはどうかと思っているんですが http://t.co/TscBklT1
2012-03-23 02:38:49@Cryolite どうせ書くなら,明らかに書かないといけない(忘れるとコンパイルエラーになるのが理想)インターフェースにしてしまいたいところですね…
2012-03-23 02:52:24@decimalbloat でも例外を投げる式というのはコンパイルエラー無しで書けてしまいますから,それは本質的に無理では…….
2012-03-23 02:57:02@Cryolite うーんその逆にreturnも同様に普通に書けてしまうので,何かしらの形でcommit/rollbackを強制させるというのはやはり無理そうですね…
2012-03-23 03:22:45returnおよびスコープ終端への到達を検知したらcommitフラグを自動的に立てる方法思いついたし,やってみよう
2012-03-23 10:13:10これでGCC限定でscope(failure)を完璧にエミュレートできる下準備がすべて整ったので、後は幽霊と実装競争である。(ただしかなり酔ってる上に私の実体はまだ近鉄奈良にある)
2012-03-23 21:13:11そういえばC(ryさんがscope(failure)の実装競争を宣言していたらしいのですが終わったのでしょうか
2012-03-24 12:05:16http://t.co/r2IhsMms ふむ.ふむ,っていうかこれ使って無限 unwind 再帰によってアクティブな例外で溢れさせるとどうなるんです?
2012-03-24 12:27:35