C ++テンプレート関数を作成するときに、この関数で使用される変数の型が整数であることを確認する必要があります。その場合は、コンパイルエラーが発生するはずです。
template <class IT> void foo( IT first, IT last ) {
// check here that *first has integral type.
}
私が抱えている問題は、この関数テンプレートパラメータが直接使用される型ではなく、イテレータ型であるということです。
残念ながら、私は現在C ++ 11もBoostも使用できない環境にいるので、このホイールを自分で作り直さなければなりません。
配列サイズのパラメーターを使用して配列へのポインターを定義することにより、型が整数であることをテストすることになりました。パラメータタイプが非整数の場合、これはコンパイルエラーを生成します。
template <class IT> void foo( IT first, IT last ) {
int ( * fake_array_ptr )[*first]; // Error: size of array has non-integral type
}
私の質問は、型が整数であるかどうかをテストする他のより明確な方法はありますか?