2013-06-13 14 views
6

私はModern C++ Designを通して読んでいます。タイプリーストの構造がバリデーショナルなテンプレートに置き換わる可能性があると私は考えました。どちらもリスト内の最初の型と残りのリストを別々に処理するために再帰に依存しているようです。タイプリーストがバリデーショナルテンプレートではできないことを許可するものはありますか?タイプリストは完全に可変的なテンプレートに置き換えられますか?

答えて

8

タイプリストでは、いくつかのことが可能です。たとえば、メタ関数の結果として、可変長引数パックを持つことができない - このような何かを表現する方法はただありません:

template <typename... Args> 
struct argpack_id { 
    typedef Args result; 
}; 

あなたがタイプリストでこれを行うことができます。

一方、あなたはおそらく

template <typename... Args> 
struct TypeList {}; 
としてtypelistに自分自身を実装する必要があります
関連する問題