2

これは10個のハードコードされたテンプレートのようですが、LokkiのTypelistに非常によく似たconsテンプレートクラスの実装もあります。では、ブーストタプルテンプレートは、Typelist / cons実装の単なるラッパーですか?またはそれの要点は何ですか?

4

1 に答える 1

4

C ++ 03では(そうでなければ私たちが話しているのでstd::tuple)可変個引数テンプレート機能がないため、特定のデフォルトで十分な数のパラメーター(*)でエミュレートされます。

設計決定の理論的根拠を読んで、実際の実装のヒントを得ることができます。

短所リストの終了マーク(nil、null_type、...)

タプルは、内部的に短所リストとして表されます。

tuple<int, int>

から継承

cons<int, cons<int, null_type> >

null_typeリストの終了マークです。元々の提案はでしnilたが、その名前はMacOSで使用されており、問題が発生した可能性があるため、 null_type代わりに選択されました。考慮された他の名前はnull_tand unit(SMLの空のタプルタイプ)でした。

null_type空のタプルの内部表現である ことに注意してください:tuple<>から継承しnull_typeます。

(*)通常、Boostでは、コードはマクロを使用して生成されるため、上限を構成できます。

于 2012-05-23T15:27:23.457 に答える