提升::任何构造函数 - 常量类型重载分辨率
boost::any constructors - const type overload resolution
boost::any 有一个完美的前向构造函数声明为:
template<typename ValueType>
any(ValueType&& value
, typename boost::disable_if<boost::is_same<any&, ValueType> >::type* = 0 // disable if value has type `any&`
, typename boost::disable_if<boost::is_const<ValueType> >::type* = 0) // disable if value has type `const ValueType&&`
: content(new holder< typename decay<ValueType>::type >(static_cast<ValueType&&>(value)))
{}
SFINAE 排除is_const<>强制 const 类型使用常规复制构造函数:
template<typename ValueType>
any(const ValueType & value)
: content(new holder<
BOOST_DEDUCED_TYPENAME remove_cv<BOOST_DEDUCED_TYPENAME decay<const ValueType>::type>::type
>(value))
{}
常规复制构造函数处理 const 值的方式与删除is_const<>排除项时完美正向构造函数处理的方式有何不同?
第一个专门用于右值引用(enable_if
确保它(。
static_cast是使用std::move
的同义词,所以它会移动。
相关文章:
- 是否使用cv::Point2f类型重载std::排序
- 如何使用common_type和模板递归类型重载运算符+
- 按返回类型重载函数模板
- 是否可以根据类型是整数类型还是浮点类型重载模板函数
- 使用 ostream 和枚举类型重载<<
- 如何根据数组参数项类型重载 IDL 中的函数
- 按参数中的向量类型重载函数
- 如何使用内置返回类型重载运算符?
- 同时使用参数重载和返回类型重载
- 使用子类型重载调用函数
- 按返回类型重载模板
- 基于参数函数参数类型重载函数模板
- C++类型 重载仅部分起作用
- 提升::任何构造函数 - 常量类型重载分辨率
- 按函子参数计数类型C++重载
- C++类型重载问题
- 按返回类型重载
- C++按返回类型重载函数
- 如何包装按类型重载的函数
- 使用专门的模板根据返回类型重载函数