`

boost reference_wrapper

阅读更多
reference_wrapper是一个引用类型的包装器
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_;
};

reference_wrapper就像是被包装对象的一个别名,但它只有在使用T的语境下才能够执行隐性转换,其他情况下则需要调用类型转换函数或get()函数才能真正被包装对象。
#include<boost/ref.hpp>
#include<assert.h>
#include<iostream>
using namespace std;
using namespace boost;
int main()
{
    int x=10;
    reference_wrapper<int> rw(x);
    assert(x==rw);
    (int &)rw=100;
    reference_wrapper<int> rw2(rw);
    assert(rw2.get()==100);
    cout << rw2.get() << endl;
    string str;
    reference_wrapper<string> rws(str);
    *rws.get_pointer() = "test reference_wrapper";
    cout << rws.get().size() << endl;
}

100
22
分享到:
评论

相关推荐

    st_asio_wrapper一组boost.asio包装类(1.1版)

    st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.50.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来; 自动重连,数据透明传输,自动...

    libcef_dll_wrapper.lib 3.1364.1094_windows

    之前的cef vs2005编译 发下少了libcef dll wrapper工程,特此补上lib文件,自己在cefclient.cpp里补上#pragma comment( lib, "libcef_dll_wrapper.lib")即可

    st_asio_wrapper——一组包装boost.asio的c/s框架(2.2版)

    更多更新请看st_asio_wrapper_socket.h,所有更新都会罗列在这个头文件的开头处,另外st_asio_wrapper_server.h的开头部分注释也很重要,有工作原理相关的说明。 2.2版更新内容: 增加了一个demo——文件传输服务端...

    st_asio_wrapper, 基于 Boost.Asio;的高效异步c/s 网络框架.zip

    的高效异步c/s 网络框架 st_asio_wrapper概述st_asio_wrapper是基于 Boost.Asio,的异步c/s 框架,除了增强和 Boost.Asio, 带来的所有好处外,它还包含:基于消息就像UDP和几个内置的封隔器和解包器;支持

    st_asio_wrapper一组包装boost.asio的c/s框架(2.3版)

    st_asio_wrapper是一组类库,功能是对boost.asio的包装(调试环境:boost-1.51.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步(当然这是从boost.asio继承而来)、自动重连,数据透明传输,自动...

    windows程序设计(珍藏版)_wrapper_wrapper

    windows程序设计(珍藏版)_wrapper_wrapperwindows程序设计(珍藏版)_wrapper_wrapperwindows程序设计(珍藏版)_wrapper_wrapper

    st_asio_wrapper一组boost.asio包装类(1.3版)

    st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.50.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来; 自动重连,数据透明传输,自动...

    st_asio_wrapper一组boost.asio包装类(1.2版)

    st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.50.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来; 自动重连,数据透明传输,自动...

    st_asio_wrapper一组boost.asio包装类(1.2版本)

    st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.50.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来; 自动重连,数据透明传输,自动...

    java 2d API Java_2D_API_中文使用指_wrapper

    java 2d API Java_2D_API_中文使用指_wrapper 中文指南

    wpa_cli_wrapper.zip

    进入 wpa_cli_wrapper/wpa_supplicant-2.6/wpa_supplicant 目录,执行 make -f Makefile.wrapper, 在当前目录下生成 libwpa_cli_wrapper.a 和 libwpa_cli_wrapper_test;如果遇到提示类似“致命错误:netlink/genl/...

    as3_jpeg_wrapper

    编辑-》首选参数-》actionscript-》actionscript 3.0设置-》库路径-》浏览到swc文件,然后选择那个as3_jpeg_wrapper.swc 另外,在“发布设置”的flash选项里,也要勾选“发布swc” 不需要通过后台或者fms,直接在...

    tcp_wrapper

    tcp_wrapper tcp_wrapper

    st_asio_wrapper一组boost.asio包装类(1.4版)

    st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.50.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来; 自动重连,数据透明传输,自动...

    Credential_Provider_Technical_Reference_wrapper.pdf

    微软的credential provider技术手册,详细描述了各接口的作用,宏以及结构体各成员的含义。包含win10系统在credential provider规范下的变化。

    libcef_dll_wrapper.lib vs2010

    libcef_dll_wrapper.lib windows32版本,包含Release和Debug版本,采用VS2010编译

    st_asio_wrapper最新版(2016.1.9)

    推荐去https://github.com/youngwolf-project/st_asio_wrapper.git更新,我的资源里面会不定期更新到最新版,但不会及时。

    libcef_dll_wrapper.lib VS2017

    网上的版本都太低了, 这是我用cef_binary_3.3239.1700.g385b2d4_windows32生产的VS2017版本

    Python库 | lp_api_wrapper-0.3.5.tar.gz

    python库。 资源全名:lp_api_wrapper-0.3.5.tar.gz

    st_asio_wrapper一组boost.asio包装类(1.5版)

    st_asio_wrapper是一组类,功能是对boost.asio的包装(调试环境:boost-1.50.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步,当然这是从boost.asio继承而来; 自动重连,数据透明传输,自动...

Global site tag (gtag.js) - Google Analytics