C++ 'boost::any'和'std::any'之间的区别`

C++ 'boost::any'和'std::any'之间的区别`,c++,boost,c++17,C++,Boost,C++17,C++17介绍了基于boost库的对象容器。 我的问题是:标准化的是否等同于boost版本,或者是否存在差异 A,在这种情况下存在一些差异,但我找不到有关任何的参考资料 编辑:我可以看到的一个不同点是方法emplace的可用性。不仅仅是API中的差异,我对行为和保证之间的差异感兴趣。例如,不同的分配对我来说意义重大 我对行为和保证之间的差异感兴趣 没有任何行为差异;不是真的。它们对ValueType都有相同的要求(copy-constructible和一个不发出异常的析构函数)。它们都对存储的

C++17介绍了基于boost库的对象容器。 我的问题是:标准化的
是否等同于boost版本,或者是否存在差异

A,在这种情况下存在一些差异,但我找不到有关
任何
的参考资料


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

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

没有任何行为差异;不是真的。它们对ValueType都有相同的要求(copy-constructible和一个不发出异常的析构函数)。它们都对存储的值提供相同的操作,具有几乎相同的异常保证


主要区别在于,
boost::any
的实现目前没有实现小对象优化,而
std::任何
实现都可以提供它。

如果内存分配和间接寻址是一个问题,那么您根本不应该使用
任何
。可能的重复:@MaximeGroushkin:它们不是一个问题,但我想知道在什么情况下会发生什么。谢谢您的回答。An说boost从不应用小对象优化。这个答案已经过时了。boost实现是否同时发生了变化?
boost::any
不实现小对象优化。感谢您编辑答案。您知道,标准库是否实现了小对象优化?