我只是对boost::variant
' 的实现感到好奇。
它像这样工作吗?
两名成员:
- 表示当前存储类型的数字(即第一个模板参数为 0,第二个模板参数为 1 等)
- 所有可能类型的联合(当然是最大的)。
apply_visitor()
:
有一个switch
关于表示当前存储类型的数字的语句以调用正确的重载(在最坏的情况下,这将被编译为跳转表,因此需要恒定的时间)。
我知道还有一些优化可以肯定boost::variant
不需要像这里详述的那样动态分配内存,但我想我明白了。
我只是对boost::variant
' 的实现感到好奇。
它像这样工作吗?
两名成员:
apply_visitor()
:
有一个switch
关于表示当前存储类型的数字的语句以调用正确的重载(在最坏的情况下,这将被编译为跳转表,因此需要恒定的时间)。
我知道还有一些优化可以肯定boost::variant
不需要像这里详述的那样动态分配内存,但我想我明白了。