1、ref简介
reference_wrapper包含在ref库中,它是引用包装器类型,即其内部包装了引用。
成员函数get()、get_pointer()分别可以获得被包装的引用和其指针。使用需要包含头文件"boost/ref.hpp"。
#include "boost/ref.hpp" #include <cassert> int main() { int x = 5; boost::reference_wrapper<int> rw(x); rw.get() = 10; //获得引用 *rw.get_pointer() = 15; //获得指针 int n = rw; //隐式转换为int assert(x == rw); //隐式转换为int rw = 20; //错误!引用包装器不能作为左值 (int&)rw = 20; //显示转换为int&,这样可以作为左值 assert(x == 20); boost::reference_wrapper<int> rw2(rw); //拷贝构造 rw.get() = 25; assert(rw2.get() == 25);//rw2也是x的一个引用对象 return 0; }