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::
来最小化对外部库的依赖(即使这些库被广泛使用)。
这两种解决方案通用吗?有更好的吗?