C++ 哪些图书馆使用;“我们知道你住在哪里”;std::使_共享的优化?

C++ 哪些图书馆使用;“我们知道你住在哪里”;std::使_共享的优化?,c++,optimization,c++11,boost,shared-ptr,C++,Optimization,C++11,Boost,Shared Ptr,两年多前,他在微软的std::make_shared实现中实现了,我从与他交谈中了解到,微软并不反对其他采用这种优化的库实现。如果你确定其他库(例如,GNU C++,Clang,英特尔C++,Plus Boost(对于 Boo::MaMaMyAdvesty/))采用了这个实现,请给出一个答案。我还没有现成的途径来访问那么多的make_shared实现,我也不想深入了解那些实现了WKWYL优化的实现,但我希望读者能马上知道一些库的答案。通过查看代码,我知道在Boost 1.52中,WKWYL优化还

两年多前,他在微软的
std::make_shared
实现中实现了,我从与他交谈中了解到,微软并不反对其他采用这种优化的库实现。如果你确定其他库(例如,GNU C++,Clang,英特尔C++,Plus Boost(对于<代码> Boo::MaMaMyAdvesty/<代码>))采用了这个实现,请给出一个答案。我还没有现成的途径来访问那么多的
make_shared
实现,我也不想深入了解那些实现了WKWYL优化的实现,但我希望读者能马上知道一些库的答案。通过查看代码,我知道在Boost 1.52中,WKWYL优化还没有实现,但是Boost现在升级到了1.55版


请注意,此优化不同于
std::make_shared
避免为
std::shared_ptr
使用的引用计数分配专用堆的功能。有关WKWYL和该优化之间的区别的讨论,请参阅。

libc++似乎实现了该优化。请参见中的
\uuuu共享\uptr\u指针
\uuuu共享\uptr\u支架
之间的区别


libstdc++似乎也实现了它。请参见中的
\u Sp\u counted\u ptr
\u Sp\u counted\u ptr\u in place
之间的区别。

如果我理解正确,这种优化会对分配器行为施加一定的限制(即分配器必须在对象附近留出足够的未使用空间)-MS可以在其紧密打包的开发环境中提供一些功能,但GCC人员可能不会提供这些功能。@oakad我的理解是,这是一种可移植的库优化,不需要对编译器或其他库组件进行任何假设(除了它们按照标准运行)。通常在运行时存储的指针,用于处理在
std::shared\u ptr
上调用删除程序时的情况,因为模板具有将
void*
转换回其真实状态所需的类型信息(即传递给
std::make\u shared
)的类型)。换句话说,优化包括消除可在编译过程中计算的运行时数据。好吧,所以我误解了这个概念(难怪,考虑到链接的问题具有误导性,并且原始描述仅以视频形式提供)。简单浏览一下boost邮件列表就会发现以下解决方案:“这有什么意义?It[ref count control block]仍然需要填充到32才能获得良好的性能并使用DWCA”。也就是说,删除额外的指针是没有帮助的。