`boost :: any`和`std :: any`之间的区别

时间:2018-03-14 13:12:30

标签: c++ boost c++17

C ++ 17引入了基于boost库std::any的对象容器boost::any。 我的问题是:标准any是否等同于升级版本,还是存在差异?

一个similar question has been posted about variant,在这种情况下存在一些差异,但我找不到关于any的引用。

编辑:我能看到的差异是方法emplace的可用性。不仅仅是API的差异我对行为和保证之间的差异感兴趣。例如,不同的分配对我来说意义重大。

1 个答案:

答案 0 :(得分:3)

  

我对行为与保证之间的差异感兴趣。

没有任何行为差异;并不是的。它们对ValueType具有相同的要求(可复制构造,并且不会发出异常的析构函数)。它们都对它们存储的值提供相同的操作,具有几乎相同的异常保证。

主要区别在于boost::any目前的实现并未实现小对象优化,而std::any实现可能提供它。