試しに公開してみた https://code.google.com/p/lix-failable/source/browse/ こいつですが、 例えばこういう関数を作るとして、 // 普通は失敗しない何かをする。失敗時は false を返す、失敗理由は(Win32の)GetLastError で。 BOOL DoSomething( int x); この 『失敗理由は GetLastError()』 というのは、概念的にはその関数のシグネチャに含まれていますが、シンタックス的にはシグネチャではありません。 かといって、ここで『ErrorCodeを返す』ように変更してしまうと、エラーハンドリングの記述が直感的ではなくなる、という問題が発生してしまいます。 BOOL DoSomething( int x); // どこかで DWORD err = DoSomething( path ); if