あるテンプレート関数(テンプレート型引数 T)で,例えば std::vector::iterator itr を定義しようとすると,コンパイルエラーとなる(std::vector::iterator が型であると認識されない).この場合 typename std::vector::iterator itr のように,前に typename をつけて,型であることを明示する.もし,iterator に相当するものが,テンプレートクラスの場合,template キーワードを使ってテンプレートであることを明示しなければならない. 例えば, template <typename T1> struct TTest { struct TIn { double X; }; }; こんな構造体があったとして, template <typename T1> void Func (void) { TTest<