Cli*_*ton 9 c++ boost boost-variant
我只是对boost::variant实施感到好奇.
这样工作吗?
两名成员:
apply_visitor():
有一个switch关于代表当前存储类型的数字的语句来调用正确的重载(在最坏的情况下,这将被编译为跳转表,因此需要恒定的时间).
我知道还有一些优化可以肯定boost::variant不需要动态分配内存,详见此处,但我想我得到了这些.
它的工作方式与您描述的方式非常相似.长话短说:
它有一个整数which,表示使用的数据类型.
存储使用boost实现aligned_storage,它基本上是最大数据大小的缓冲区.(它是在一个联合,但为了对齐目的)
最后,访问者确实使用了一个switch,在编译时使用宏来生成,以展开所有类型的可能性.
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |