boost之bind

简介

用于构造函数对象,其定义在文件bind.hpp

bind

其底层使用通用的模板类bind_t

template<class R, class F, class L> class bind_t
{
public:typedef bind_t this_type;bind_t(F f, L const & l): f_(f), l_(l) {}#define BOOST_BIND_RETURN return
#include <boost/bind/bind_template.hpp>
#undef BOOST_BIND_RETURN};

bind_t类中包含两个成员

private:F f_;//函数L l_;//参数列表构造的对象

不带参数的绑定

template<class R, class F>_bi::bind_t<R, F, _bi::list0>BOOST_BIND(F f)
{typedef _bi::list0 list_type;return _bi::bind_t<R, F, list_type> (f, list_type());
}

带1个参数的绑定

template<class R, class F, class A1>_bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>BOOST_BIND(F f, A1 a1)
{typedef typename _bi::list_av_1<A1>::type list_type;return _bi::bind_t<R, F, list_type> (f, list_type(a1));
}template<class A1> struct list_av_1
{typedef typename add_value<A1>::type B1;typedef list1<B1> type;
};template< class A1 > class list1: private storage1< A1 > 
{public:explicit list1( A1 a1 ): base_type( a1 ) {}
};

bind_t中的list类型为list1<B1>,add_value<A1>::type类型为_bi::value< T >,其定义为

template<class T> class value
{
public:value(T const & t): t_(t) {}T & get() { return t_; }T const & get() const { return t_; }bool operator==(value const & rhs) const{return t_ == rhs.t_;}private:T t_;
};

从上面可以看出boost::bind传递参数实现是参数的拷贝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4G模块详解

在之前的教程中&#xff0c;无线通信技术我们学习了蓝牙和 WiFi&#xff0c;今天我们要来学习 4G。 4G 模块在距离上有个突破&#xff0c;它不像蓝牙短距离&#xff0c;也不像 WiFi 只能在局域网&#xff0c;4G 模块可使用户无论在哪&#xff0c;只要有 4G 网络信号覆盖&#…

QT数据库操作详解

在Qt中&#xff0c;操作数据库通常使用Qt SQL模块&#xff0c;该模块提供了一组类来与数据库进行交互。 数据库连接与查询执行 QSqlDatabase::addDatabase(): 添加一个数据库连接。 QSqlDatabase::open(): 打开数据库连接。 QSqlDatabase::close(): 关闭数据库连接。 QSql…

如何实现接口继承与实现继承的区别?如何处理多态性与性能的平衡?

在面向对象编程中&#xff0c;接口继承和实现继承是两个重要的概念&#xff0c;同时多态性也是面向对象编程的一大特性&#xff0c;但在追求多态性的同时&#xff0c;我们也需要考虑性能问题。本文将详细探讨接口继承与实现继承的区别&#xff0c;以及如何处理多态性与性能的平…

Visual Studio 使用 GitHub Copilot 聊天

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

TimerPickerDialog组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为时间,它主…

MySQL运算符知识点

算术运算符 算术运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式&#xff0c;对数值或表达式进行加(&#xff09;、减&#xff08;-&#xff09;、乘&#xff08;*&#xff09;、除&#xff08;/&#xff09;和取模&#xff08;%&#xff09;运算…

【HTML】HTML动画时钟

今天分享一个比较有趣的HTML动画时钟&#xff0c;感兴趣的小伙伴可以自行上手体验一番&#xff0c;操作也非常简单&#xff0c;如下&#xff1a; 1. 实操 实践操作步骤&#xff1a; 创建一个文本文件 clock.txt将上述代码粘贴到 clock.txt 中。修改文件后缀&#xff0c;将文…

Linux高并发服务器开发 第四天(wc/whoami命令 权限修改chmod 添加/删除用户(组) 切换用户 修改文件所有者/所属组 查找/过滤)

目录 1.wc和whoami命令 1.1wc命令 1.2whoami命令 2.用户权限/用户/用户组 2.1修改文件权限chmod 2.1.1文字设定法 2.1.2数字设定法 2.2添加删除新用户和新用户组 2.3切换用户 2.4修改文件所有者和所属组 2.4.1修改所有者 2.4.2修改所属组 3.查找和过滤 3.1find—…

微服务架构导学

一. 什么是微服务 微服务是一个软件架构风格&#xff0c;将一个大型的项目拆分成多个小项目&#xff0c;每个项目都被称为一个微服务&#xff0c;通过多个微服务共同组成一个大的项目。 二. 单体架构和微服务架构 单体架构 将整个项目的功能、模块全部堆积在一个项目中 优点&am…

【kubernetes】kubectl get nodes报NotReady

目录 1. 说明2. 问题描述3. kube-flannel.yml 1. 说明 1.这里k8s的版本是v1.17.4。2.若kube-flannel.yml中的镜像拉取不下来&#xff0c;可以下载本文章的文件资源&#xff0c;手动docker load -i ***.tar的方式。3.v1.17.4的kube-flannel.yml参考下面代码。4.通过kubectl get…

web实操7——ServletContext

概念 和服务器通信 功能 解释说明&#xff1a; mime&#xff1a;互联网中一种文件的类型&#xff0c;可以用servletContext对象来获取。 域对象&#xff1a;用来共享数据&#xff0c;里面有一些get,set,removeAttribute,只要搞清楚ServletContext对象的域的范围是什么 如何…

C语言之输入输出

标准库 IO 输入输出功能并非C语言的组成部分&#xff0c;ANSI标准定义了相关的库函数 输入输出 <stdio.h> 流stream是与设备关联的数据的源或者目的地。 文本流&#xff1a;由文本行组成的序列 不同系统的特性可能不一样&#xff0c;比如行最大长度和行结束符 二进制流…

LLMC:大语言模型压缩工具的开发实践

关注&#xff1a;青稞AI&#xff0c;学习最新AI技术 青稞Talk主页&#xff1a;qingkelab.github.io/talks 大模型的进步&#xff0c;正推动我们向通用人工智能迈进&#xff0c;然而庞大的计算和显存需求限制了其广泛应用。模型量化作为一种压缩技术&#xff0c;虽然可以用来加速…

微信小程序的文件结构

微信小程序的文件结构非常直观且高效&#xff0c;主要由几个关键文件夹和文件组成。以下是对微信小程序文件结构的详细解析&#xff1a; 一、关键文件夹 Pages文件夹&#xff1a; 这是小程序的“心脏”&#xff0c;包含了每个页面的文件。每个页面通常由四个文件定义&#xff…

数据安全法-政务数据安全与开放

第五章 政务数据安全与开放 第三十七条 国家大力推进电子政务建设&#xff0c;提高政务数据的科学性、准确性、时效性&#xff0c;提升运用数据服务经济社会发展的能力。 第三十八条 国家机关为履行法定职责的需要收集、使用数据&#xff0c;应当在其履行法定职责的范围内依…

总结与提升

今天学习了ai&#xff0c;对今天学习的内容进行总结。 本文参考chat gpt-4的训练文献。 模型架构基础 Transformer 架构&#xff1a;ChatGPT 采用了 Transformer 架构&#xff0c;这是一种基于自注意力机制的深度学习模型架构。它能够并行计算文本中的长期依赖关系&#xff…

舌头分割数据集labelme格式2557张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;2557 标注数量(json文件个数)&#xff1a;2557 标注类别数&#xff1a;1 标注类别名称:["tongue"] 每个类别标注的框数&#xff1…

Jenkins 启动 程序 退出后 被杀死问题

参考 Spawning Processes From Build (jenkins.io) 解决jenkins脚本启动项目后进程被杀死_jenkins杀进程-CSDN博客

使用 Maven 来构建 Scala

以下是使用Maven构建Scala项目的基本步骤&#xff1a; 1. 创建Maven项目 - 可以使用Maven的原型&#xff08;archetype&#xff09;来创建项目。在命令行中运行 mvn archetype:generate -DgroupIdcom.example -DartifactIdmy -scala - project -DarchetypeArtifactIdmaven - ar…

测试工程师八股文03|Python编程题

一、题目 1、合并两个数组 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:nums1[m:] nums2nums1.sort()2、判断链表中是否有环 class Solution:def hasCycle(self, head: ListNode) -> bool:seen set()while head:if…