当前位置: 首页 > news >正文

C++17新特性 函数对象包装器

#include <iostream> /*
using foo = void(int);// 使用 using 定义函数类型;Function pointer type aliasvoid functional(foo f){//定义在参数列表中的函数类型foo 被视为退化后的函数指针类型foo*f(42); // 通过函数指针调用函数
}int main() {auto f = [](int x) { std::cout << x << std::endl; }; // lambda functionfunctional(f); // 传递闭包对象,隐式转换为foo*类型的函数指针值f(100); // 直接调用 lambda 函数return 0;
}
*/

/*

    上面的代码给出了两种不同的调用形式,一种是将Lambda作为函数类型传递进行调用,而另一种

则是直接调用Lambda表达式,在C++11中,统一了这些概念,将能够被调用的对象的类型,统一称之为可调用类型。

而这种类型,便是通过std::function引入的。

    C++11 std::function是一种通用、多态的函数封装,它的实例可以对任何可以调用的目标实体进

行存储、复制和调用操作,它也是对中现有的可调用实体的一种类型安全的包裹(相对来说,函数

指针的调用不是类型安全的),换句话说,就是函数的容器。当我们有了函数的容器之后便能够更加方便

的将函数、函数指针作为对象进行处理。例如

*/

#include <functional> // std::function
#include <iostream>int foo(int param) {return param ;
}int main() {std::function<int(int)> func = foo; // 使用std::function定义函数容器int important = 10; // 定义一个整数变量std::function<int(int)> func2 = [&](int value) -> int { return 1+ important + value; }; std::cout << "Result: " << func(5) << std::endl; // 调用函数容器std::cout << "Result: " << func2(10) << std::endl; // 调用函数容器return 0;
}

相关文章:

  • OIer常用的软件
  • win32相关(虚拟内存和物理内存)
  • 【linux 入门】第六章 磁盘分区+网络配置
  • linux 的devmem2 调式使用说明
  • AI入门——AI大模型、深度学习、机器学习总结
  • docker可视化工具
  • Docker 镜像制作
  • 简单工厂模式
  • 【动画】unity中实现骨骼蒙皮动画
  • Flask + Celery 应用
  • NLP学习路线图(十八):Word2Vec (CBOW Skip-gram)
  • 学习STC51单片机25(芯片为STC89C52RCRC)
  • 九(3).引用作为方法别名返回
  • 【Godot】如何导出 Release 版本的安卓项目
  • 如何增加 cPanel中的 PHP 最大上传大小?
  • 电脑故障基础知识
  • Ubuntu安装遇依赖包冲突解决方法
  • Ubuntu挂起和休眠
  • 打卡第34天:MLP神经网络训练
  • 《Effective Python》第六章 推导式和生成器——使用 yield from 组合多个生成器
  • 网站建设项目介绍/海外免费网站推广
  • 做网站的专业叫什么/国内优秀个人网站欣赏
  • 做网站内容软件/直播营销策划方案范文
  • 网站不用域名需要备案吗/正规网络公司关键词排名优化
  • 交流平台网站架构怎么做/开网店如何运营和推广
  • 永川集团网站建设/南宁seo公司哪家好