我正在开发一个C ++ 03项目,该项目需要在Boost.Move /其他Boost库的帮助下转发语义。该项目的目标是以向前兼容的方式向C ++ 11提供unique_ptr。
C ++ 11标准需要以下构造函数:
template<class U, class E>
unique_ptr(unique_ptr<U,E>&& u)
从u传输存储的数据(基本上是ptr_val = u.release()),并将:
在测试中,此代码似乎“有效”:
// data fields: pointer ptr; delete_type del;
// only used if compiler doesn't support rvalue-refs
#define BOOST_COMMA ,
template<typename U, typename E>
unique_ptr(BOOST_RV_REF(unique_ptr<U BOOST_COMMA E>) u) : ptr(u.release()), del(boost::move(u.del))
{}
template<typename U, typename E>
unique_ptr(BOOST_RV_REF(unique_ptr<U BOOST_COMMA E&>) u) : ptr(u.release()), del(u.del)
{}
template<typename U, typename E>
unique_ptr(BOOST_RV_REF(unique_ptr<U BOOST_COMMA const E&>) u) : ptr(u.release()), del(u.del)
{}
是否有任何重要的角落案件无法覆盖?