2015年4月5日日曜日

メタ関数 is_same

template <typename, typename>
struct is_same : public false_type {};

template <typename Type>
struct is_same<Type, Type> : public true_type {};
 
1つ目はfalse_typeを継承したis_same。
テンプレート引数2つがどんな組み合わせでも実体化されうる 
したがって
次に定義する特殊化されたis_sameが選ばれなければis_sameはfalse_typeを継承する。
 
2つ目は2つのテンプレート引数が同一だった場合の特殊化。これが選ばれるとtrue_typeを継承する。
  
 

0 件のコメント:

コメントを投稿