8
私はboost::variant
の実装について興味があります。boost :: variant implementation
このように機能しますか?
2人のメンバー:
- (第2のテンプレートパラメータなどのために、すなわち0最初のテンプレートパラメータは、1)現在記憶されているタイプを表す数字
- コースの全ての可能な種類(の組合最大のサイズ)。
apply_visitor()
:
(これはジャンプテーブルとしてコンパイルすることが最悪の場合にはその一定の時間がかかるでしょう)正しいオーバーロードを呼び出すために現在保存されているタイプを表す数でswitch
文を持っています。
また、boost::variant
には、詳細なhereのように動的にメモリを割り当てる必要はないことが確かな数多くの最適化がありますが、私はこれらを得ると思います。
実際にはソースコードを見ることができ、ドキュメンテーションでさえそれがどのように実装されているかを知ることができます。私はバッファ(十分な型のchar配列)とバッファを解釈する方法を決定するタグを期待します。 –
事前に申し訳ありませんが、ソースを見てきましたか?ソースを勉強したり、テストアプリケーションをビルドしたり、デバッガでステップ実行したりすることで、動作の仕組みを正確に把握できるはずです。 – Bukes