GCC-4.7 に Alias declarations (Template aliases) が実装されていた

いつの間にか GCC-4.7 に Alias declarations (Template aliases) が実装されていたようです:
http://gcc.gnu.org/projects/cxx0x.html


これにより,

// my_vector<T> を std::vector<T, my_allocator<T>> の代わりに使える
// 関数テンプレート等で型推論させられない弱点はあるが
template< class T >
using my_vector = std::vector<T, my_allocator<T>>;

// テンプレートではない普通の typedef の代わりとしても使える
using vec_t = my_vector<int>; // typedef my_vector<int> vec_t; と同じ
// 関数等の ややこしい型を typedef する場合に重宝する
using function_t = void ( vec_t const& ); // typedef void function_t( vec_t const& ) と同じ

とか書けるようになります( gcc-4.7-20111112 で確認).


GCC-4.7 には Non-static data member initializers や Explicit virtual overrides (final, override) も導入されたので,
今までに比べて地味に(しかし確実に)コードが書きやすくなっていて,素敵.