using boost::mpl::enable_if;
template <class T>
typename enable_if<boost::is_integral<T>, void>::type
foo(T t) {}

こんな風に使えるtypename演算子ですが、gccにあるtypeof演算子とは
どういった点で異なるんでしょうか?