C++11<functional>深度剖析:背景、原理、接口与实现
2024-08-26 17:49:40
自C++11以来,C++标准每3年修订一次。C++14/17都可以说是更完整的C++11;即将到来的C++20也已经特性完整了。
C++11已经有好几年了,它的年龄比我接触C++的时间要长10倍不止吧。我当然没有体会过在C++11标准发布之前用C++编程是什么感受,但相比我在上MOOC时使用的C++03标准,C++11中lambda表达式的语言特性以及 std::function 与 std::bind 等设施是十分方便的。同时,标准库中的仿函数等也是与这些特性密不可分的。然而,其中一些特性的实现难以想象(曾经我甚至以为 std::function 与编译器内部存在某些联系),也难以理解,所以我要写这个系列的文章。
这一系列文章介绍 <functional> 头文件的实现,主要围绕C++11标准展开,并伴有少量更新标准的内容。
由于 <functional> 中涉及到很多其他的特性,我会在文章中简要介绍它们的使用,并在文章结尾处附上相关文章链接。
文章链接(持续更新中):
最近在设计一个 std::function 的扩展,在参赛结束后会写一篇文章来介绍。
相关资料:
[1] function/bind的救赎(上)(没有下篇;此文写于2010年,boost与TR1中已有 std::function ,但C++11还未发布)
待补充……
最新文章
- ca 自签名证书 并实现HAProxy https功能
- codeIgniter 文件路径的问题
- js-函数eval
- Neo4j Cypher运行示例
- 20145317《Java程序设计》实验三
- 表设计VIso
- linux下搭建svn服务器
- DWZ框架学习一
- 16.按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
- kafka java使用
- 201521123070 《JAVA程序设计》第13周学习总结
- Linux shell编程:状态变量
- 常识判断-科技-day123
- 使用pm2 管理node服务后台运行
- Java IO流01-总叙
- computer、methods和watch
- 汇编 do while循环
- React Native开发之IDE(Atom+Nuclide)安装,运行,调试
- 7.7 Models -- Working with Records
- HashMap 和 HashTable 到底哪不同 ?
热门文章
- Tensorflow object detection API(1)---环境搭建与测试
- 【多线程与并发】Java中的12个原子操作类
- 三大框架 之 SSH整合
- ubuntu16.04和ubuntu18.04安装dlib
- Android从5.0到9.0版本的主要变更
- 让remix使用本地文件系统
- vue的vuex在使用...mapState 和...mapGetter报错的解决方案
- Flutter AspectRatio、Card 卡片组件
- Android输入法遮挡了输入框,使用android:fitsSystemWindows=";true";后界面顶部出现白条解决方案
- 算法习题---5-3卡牌游戏(UVa10935)