SumatraPDF開発者、16年ぶりにstd::functionを放棄、独自コールバック関数を作成

2025-06-15
SumatraPDF開発者、16年ぶりにstd::functionを放棄、独自コールバック関数を作成

SumatraPDFの開発者は、16年間のC++開発を経て、デバッグの困難さから`std::function`とラムダ式を放棄しました。コンパイラが自動生成するラムダ関数の名前が分かりにくく、クラッシュレポートの解析が困難だったためです。そこで、よりシンプルで分かりやすいカスタムコールバック関数`Func0`と`Func1`を作成しました。`std::function`ほど機能は豊富ではありませんが、メモリ使用量とコンパイル速度において大きな利点があり、デバッグも容易です。この記事では`Func0`と`Func1`の設計と実装の詳細、そしてこのアプローチがSumatraPDFに適している理由について説明します。