C++11では、エイリアス宣言のテンプレート化ができるようになったが、どうもうまい使い方が思いつかない。無論、私の言う「うまい使い方」とは、世間とは少し離れている。
唯一思いつくものとしては、メタ関数の呼び出しにnested typeが必要なくなるというものだ。
template < typename T > using add_pointer = typename std::add_pointer< T >::type ; template < typename T > void f( T t ) { using namespace std ; // めんどくさい typename add_pointer< T >::type a = nullptr ; // 簡単 add_pointer< T > b = nullptr ; }
エイリアステンプレートを使えば、nested typeを書かなくてよくなるばかりか、typenameすら必要なくなる。なぜならば、エイリアス宣言は文脈上、必ず型であるので、typenameを明示的に書く必要がないからだ。
No comments:
Post a Comment