This makes for verbose code and quickly becomes annoying. Fortunately C++11 brings us
template aliases (available on Clang 3.0 and GCC 4.7). With these one can make these things much less of an eye sore.

One can capture this typename T::type pattern with a template alias that can be used to replace it: