问题

auto 自动类型推导关键字隐去了一切有关对象类型的信息,通过typeid关键字我们可查阅一般对象(甚至是函数指针)的类型信息。

auto i = 42;
typeid(i).name()    // intdouble f() { return 0.;}
auto l = f;
cout << typeid(l).name() << endl;// double (__cdecl*)(void)typedef int(*Func)(int, int);
auto l = Func();
cout << typeid(l).name() << endl;// int (__cdecl*)(int,int)

然而如果我们想使用typeid关键字查看lambda函数的类型信息:

lambda的类型

Lambda的类型,是个不具名function object(或称functor)。每个lambda表达式的类型是独一无二的。

auto l1 = []{};
auto l2 = []{};
cout << typeid(l1).name() << endl;
cout << typeid(l2).name() << endl;//  class <lambda_ba04e06061e67fcbf8089a159f12084d>//  class <lambda_1e7023d264f05a684a30712bba49d636>

除了能得到两个对象均是lambda函数外,无法通过typeid关键字获得额外的信息。

通过模板捕获类型

std::function<int(int, int)> returnLambda()
{return [](int x, int y){ return x*y};
}// #include <functional>
int main(int, char**)
{auto lf = returnLambda();std::cout << lf(3, 5) << std::endl;return  0;
}

使用decltype关键字

auto func = []{cout << "hello world" << endl;}// func是函数对象,而非类型
decltype(func) f;// decltype(func)获得对象的类型
f();

C++14::lambda函数的类型相关推荐

  1. 【C++11】lambda函数及其基本用法

    目录 即看即用 详情 基本概念和用法 捕获列表 lambda表达式的类型 即看即用 语法: [capture](parameters)->return-type {body} []叫做捕获说明符 ...

  2. C++中的Lambda函数

    Lambda函数也叫匿名函数,是自定义函数的一种,专指用关键字" lambda"定义的无名短函数,所以也有Lambda表达式这种说法.这种函数得名于省略了用def声明函数的标准步骤 ...

  3. C#中Lambda表达式类型Expression不接受lambda函数

    在EF Core中我们经常会用System.Linq.Expressions系统命名空间的Expression<TDelegate>类型来作为EF Core的查询条件,比如: using ...

  4. 【踩坑记录】priority_queue 第三个模板参数和sort 的第三个形参的区别;仿函数、自定义排序函数、lambda 函数分别传入;传入类型和对象的区别;

    文章目录 一.priority_queue 二.sort 三.总结: 一.priority_queue priority_queue<int,vector<int>,greater& ...

  5. Python 精选笔试面试习题—sorted 与 sort 单例模式、统计字符个数Count、垃圾回收、lambda函数、静态方法、类方法、实例方法、分布式锁、

    1. 字典根据键从小到大排序? In[38]: dic = {"name": "Tom", "age": 30, "country ...

  6. C++:Lambda函数学习

    C++:Lambda函数学习 该文章转载自caimagic的博客:https://www.cnblogs.com/langzou/p/5962033.html 或许,Lambda 表达式算得上是 C+ ...

  7. lambda函数详解

    lambda函数的作用就是可以编写内嵌的无名函数,而不必写成独立的函数: 结构:[]为开始,(参数){函数体} 例如: 1. auto lambdaFun1 = [](int a) {std::cou ...

  8. Python 中的万能之王 Lambda 函数

    Python 提供了非常多的库和内置函数.有不同的方法可以执行相同的任务,而在 Python 中,有个万能之王函数:lambda 函数,它可以以不同的方式在任何地方使用.今天云朵君将和大家一起研究下这 ...

  9. c++ lambda函数_C++11 之 lambda函数的详细使用

    1. lambda 函数概述 lambda 表达式是一种匿名函数,即没有函数名的函数:该匿名函数是由数学中的λ演算而来的.通常情况下,lambda函数的语法定义为: [capture] (parame ...

最新文章

  1. 基于JSP实现的项目管理平台系统
  2. java子类有参构造函数吗_为什么我需要在这个Java通用子类中有一个构造函数?...
  3. 安装百分之80卡住_新车买回来要不要安装发动机护板呢?装好还是不好?
  4. 网上书店例子(JSP和JavaBean)
  5. NodeJS中的require和import
  6. 使用STL去除std::vector自定义结构体重复项
  7. 2013阿里技术嘉年华:阿里数据同步前世今生
  8. vba 判断目标单元格内容改变的代码_【VBA小代码】批量改变单元格部分字符格式...
  9. PY++ 自动将你的C++程序接口封装供python调用
  10. Bootstrap 轻量级后台管理系统模板--ACE使用介绍
  11. 大漠软件c语言教程,大漠万能脚本编辑器无需写代码,截图可以制作脚本附视频教程...
  12. 商陆花、秦丝、管家婆,到底服装加盟管理软件哪家强?来看排行榜
  13. php时间戳转换成日期格式,PHP时间戳和日期格式相互转换
  14. XJOI contest800
  15. 无法找到元素 'aop:aspectj-autoproxy' 的声明
  16. Love Letter
  17. 蚂蚁金服区块链切入新场景,支付宝首创公积金黑名单及缴存证明
  18. 达人评测锐龙r7 5800h和酷睿i7 12650h选哪个好
  19. Android 多进程的基础使用及优缺点
  20. 基于Flutter的仿微信聊天应用

热门文章

  1. MySQL5.7安装教程(windows .zip)
  2. flask项目源码_源码解读:Flask上下文与代理模式
  3. python实现点击按钮_python实现点击按钮修改数据的方法
  4. Python数据结构实战——队列(Queue)
  5. 剑指offer面试题09. 用两个栈实现队列(队列、栈)
  6. python-数字(int)知识整理
  7. hiho一下第91周《Events Arrangement》(前半部分)
  8. POJ-2226 Muddy Fields 最小点集覆盖
  9. WHERE+HAVING
  10. dts无法识别excel中的数字值?