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
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.