boost::variant
の実装に興味があります。
このように動作しますか?
2人のメンバー:
- 現在保存されているタイプを表す数値(つまり、最初のテンプレートパラメーターの場合は0、2番目のテンプレートパラメーターの場合は1など)
- 可能なすべてのタイプの和集合(もちろん最大のサイズ)。
apply_visitor()
:
正しいswitch
オーバーロードを呼び出すために、現在格納されているタイプを表す数値に関するステートメントがあります(これは、最悪の場合、ジャンプテーブルとしてコンパイルされるため、一定の時間がかかります)。
ここboost::variant
で詳しく説明するように、メモリを動的に割り当てる必要がない最適化もいくつかあることは理解していますが、私はこれらを取得したと思います。