我正在研究需要共享指针的跨平台代码。由于我无法控制的原因,我们还不能使用 C++11。所以,我建议使用 boost::shared_ptr。当我们确实采用 C++11(可能一年后)时,我们应该能够用 std 智能指针替换 boost 智能指针。我的问题是关于使用 boost 的最佳方式,以便以后更容易切换。模板别名不可用,因此以下内容不可用:
namespace my {
template <typename T>
using shared_ptr = boost::shared_ptr<T>;
}
将 shared_ptr 包装在另一个结构中的另一种技术会导致丑陋且不可读的 API,因为我将不得不因此使用它my::shared_ptr<int>::type
:
namespace my {
template<typename T>
struct shared_ptr
{
typedef boost::shared_ptr<T> type;
};
}
我正在寻找替代方案。任何建议将不胜感激。
编辑:我考虑的另一个选择是:
namespace my {
using boost::shared_ptr;
}
然后使用my::shared_ptr<int>
. 后来我会boost
改成std
in namespace my
。但是,我无法决定每种方法的利弊来做出决定。