autoconf与其他 TR1/BOOST C++0x 模板结合使用shared_ptr以最大限度地提高可移植性和可维护性的最佳实践是什么?
有了autoconf我可以确定是否shared_ptr可用std::tr1::shared_ptr和/或boost::shared_ptr. 鉴于相同的功能有两个不同的名称,我有以下问题:
- 在代码中,应该如何
shared_ptr引用? - 应该
std::tr1::shared_ptr优先于boost::shared_ptr?
首先,代码当前正在使用预处理器条件,允许对 的非限定引用shared_ptr,a
#if HAVE_STD_TR1_SHARED_PTR
using std::tr1::shared_ptr;
#elif HAVE_BOOST_SHARED_PTR
using boost::shared_ptr;
#else
#error "No definition for shared_ptr found"
#endif
其次,代码使用std::tr1::overboost::来最小化对外部库的依赖(即使这些库被广泛使用)。
这两种解决方案通用吗?有更好的吗?