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