directx9_error

posix_errorとwindows_errorの実装がほとんど同じなので、実装だけ共通化しました。
名前はsystem_error。まるで元に戻ったみたいですね。
今日の差分
使い方は、次の形式の特徴クラスを用意してクラステンプレートsystem_errorをインスタンス化します。

struct ErrorTraits
{
    typedef implementation-defined value_type;

    static std::string message(value_type code);
};

typedef system_error<ErrorTraits> Error;

これで、同様の例外クラスを簡単に作成できるようになりました。
例えば、DirectX9のエラーはこうなります。

#include <hamigaki/system/system_error.hpp>
#include <windows.h>
#include <dxerr9.h>

struct directx9_error_traits
{
    typedef long value_type;

    static std::string message(long code)
    {
        return ::DXGetErrorDescription9A(code);
    }
};

typedef hamigaki::system::system_error<directx9_error_traits> directx9_error;


と、今日の成果は少なめです。
どうもネットの調子が悪く、作業がはかどっていません。
ADSLモデムがへたってるっぽいのでFTTHに変えようとは思っているんですが、明日以降日記を更新できないこともありそうです。