まず、typename がどの様に使はれるのかを見てみる。よくあるのは、以下の二つの場合である。 template <typename T> // case 1 class Hoge { typename T::value_type v; // case 2 ... }; case 1 の typename は class で置き換へることが出来る。しかし、T には int 等の組込み型が代入されることもあるので、typename を使つた方が意味的に良いと言はれてゐる。 case 2 の typename は class で置き換へることが出来ない。class T::value_type とした場合、value_type は T の内部クラスであるという意味になる。 case 2 の様な typename は必要なさそうに見えるが省略することは出来ない。こんなもの無くても、T::valu