これは10個のハードコードされたテンプレートのようですが、LokkiのTypelistに非常によく似たconsテンプレートクラスの実装もあります。では、ブーストタプルテンプレートは、Typelist / cons実装の単なるラッパーですか?またはそれの要点は何ですか?
質問する
694 次
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_t
andunit
(SMLの空のタプルタイプ)でした。
null_type
空のタプルの内部表現である ことに注意してください:tuple<>
から継承しnull_type
ます。
(*)通常、Boostでは、コードはマクロを使用して生成されるため、上限を構成できます。
于 2012-05-23T15:27:23.457 に答える