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

Spi*_*ros 9 c++ boost c++17

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

一个类似的问题已发布有关variant,在这种情况下,存在一定的差异,但我找不到任何关于引用any.


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

Nic*_*las 6

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

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

原理区别在于,boost::any目前的实现并没有实现小对象优化,而std::any实现可能会提供。