わんくまで見た方法を使ってでっちあげてみた。 C++ のコードを書いたのは久しぶりな気がする・・・ オリジナルと違う部分は、純粋仮想関数で固めた log_adapter でどうのこうのするんじゃなくて、template 使ったところ。 どーせこの辺は静的に決まるだろうから、わざわざ動的なディスパッチは必要ないんじゃないかなぁ。 ただ、log_info の with_logger で log_info_with_logger 生成して返すとか、なんだか微妙。 実際にログ出力を行うクラス側に operator() を持たせるとかしてごにょごにょやればいいんだろうけど・・・ そうすると実際にログ出力を行う側の記述が面倒になっちゃうんだよなぁ・・・ 以下コード。 #include <iostream> #include <cstdarg> #include <cstdio> // グローバルを汚し