コンパイルをデバッグ

ランタイムエラーが残した情報だけでは、そのエラーを修正するのは難しい(と少なくとも私は思う)。だからこそデバッガを使うのだが、template meta programmingは、言わばコンパイル時が実行時間なんだから、TMPにとっての実行時メッセージであるコンパイルエラーだけでデバッグするのはそりゃ難しいはずだ。
で、conceptというのが実行時で言う例外とかassertみたいな、エラー処理の仕組み(の一つ)にあたると考えると、コンパイル時にコンパイルプロセスをステップ実行できれば便利なんじゃないだろうかという電波を受信した。
例えば、あるtemplateをinstanciateしようとしたらコンパイルを停止して、そのときの環境(どこにどんな名前があるとか、その名前は何者(変数・型・名前空間)であるかなど)を表示できる機能とか、停止中にその場で定義を変更できる機能とか。
ただ、コンパイラ作るのとデバッガ作るのでは、後者の方が明らかに難しそうなことを考えると、これはつまりコンパイラにデバッガ搭載するようなもんだから、すごい茨の道かもしれない。そういや昔ちょろっと立ち読みしたデバッガの本に、デバッガはコンパイラに比べて一世代だか十年だか遅れているとか書いてあったっけな。