ENUMを引数に持つ関数の呼び出しでクラッシュ

デバッガで見ると

>	sqirr.exe!Sqrat::Var<enum irr::video::E_DRIVER_TYPE>::Var<enum irr::video::E_DRIVER_TYPE>(SQVM * vm=0x003de640, int idx=0x00000002)  行 47 + 0x13 バイト	C++

sqratTypes.hの

value = *ClassType<T>::GetInstance(vm, idx);
// ClassType<T>::GetInstance(vm, idx)が0を返しそれの参照先を得ようとして死亡

で死んでいた。原因は、型によるテンプレートの振り分け失敗でenumをポインタでどうにかしようとしていることのようだ。
クラッシュ付近のソースを見ていたら
#define SCRAT_INTEGER
の存在に気づいた。これでenumをint扱いにすればいい。
sqirr.exeに次のコードを追加。

namespace Sqrat {
  SCRAT_INTEGER(irr::video::E_DRIVER_TYPE);
}

実行

> debug\sqirr.exe 01.HelloWorld.nut

もう少し先の違うところで死ぬようになった。
SCRAT_INTEGERで検索しても何も出てこないがもっと他の方法があるのだろうか。
僅かに前進?