【发布时间】:2012-09-01 03:39:00
【问题描述】:
我想在某个时候使用boost::log,但我无法将std::shared_ptr 作为参数传递,因为编译器(VS2010)无法将其转换为boost::shared_ptr。
我真的不喜欢他们彼此是外星人这一事实。
是否有一种安全且透明的方法可以将一个转换为另一个,以免它们相互绊倒?
我不认为这是 this question 的重复声明两者相同。
【问题讨论】:
-
对于 C++11 之前的答案,请参阅:stackoverflow.com/questions/6326757/…
-
我对 std::array 与 boost::array 有类似的问题。
-
@alfC 我认为没有简单的方法可以在
std::array和boost::array之间进行转换而不复制数组的内容。 -
@alfC:即使编译器停止抱怨,这也是破坏智能指针状态的可靠方法。
-
他们应该有相同的界面,为什么不破解 boost,并将
boost/shared_ptr.hpp的内容替换为#include <memory> namespace boost { using shared_ptr = std::shared_ptr之类的内容?
标签: c++ boost c++11 shared-ptr