ref

在C++的算法和函数之间,以类对象作为参数的情况很非常常见的问题,一般情况下传值语义是可行的,但也有很多特殊情况,作为参数的函数对象拷贝代价过高(具有复杂的内部状态),或者不希望拷贝对象(内部状态不应该被改变),甚至拷贝是不可行的(noncopyable、单件)。
template < class  T>  class  reference_wrapper  
{   
public :  
     typedef  T type;  
#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1300 )   
     explicit  reference_wrapper(T& t): t_(&t) {}     
#else   
        explicit  reference_wrapper(T& t): t_(boost::addressof(t)) {}     //
#endif   
       operator T& ()  const  {  return  *t_; }     
    T& get()  const  {  return  *t_; }     
    T* get_pointer()  const  {  return  t_; }     
private :     
    T* t_;  
};

通过转换构造函数将T的对象转化为T的引用,能够减少函数的传参过程中的开销
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值