1、decltype是类型推导

#include <iostream>struct A { double x; };
const A* a;decltype(a->x) y;       // y 的类型是 double(其声明类型)
decltype((a->x)) z = y; // z 的类型是 const double&(左值表达式)template<typename T, typename U>
auto add(T t, U u) -> decltype(t + u) // 返回类型依赖于模板形参
{                                     // C++14 开始可以推导返回类型return t+u;
}int main()
{int i = 33;decltype(i) j = i * 2;std::cout << "i = " << i << ", "<< "j = " << j << '\n';auto f = [](int a, int b) -> int{return a * b;};decltype(f) g = f; // lambda 的类型是独有且无名的i = f(2, 2);j = g(3, 3);std::cout << "i = " << i << ", "<< "j = " << j << '\n';
}

运行结果:
2、std::declval

inline T &&std::declval<T>()

将任意类型 T 转换成引用类型,令在 decltype 表达式中不必经过构造函数就能使用成员函数。

// declval example
#include <utility>      // std::declval
#include <iostream>     // std::coutstruct A {              // abstract classvirtual int value() = 0;
};class B : public A {    // class with specific constructorint val_;
public:B(int i,int j):val_(i*j){}int value() {return val_;}
};int main() {decltype(std::declval<A>().value()) a;  // int adecltype(std::declval<B>().value()) b;  // int bdecltype(B(0,0).value()) c;   // same as above (known constructor)a = b = B(10,2).value();std::cout << a << '\n';return 0;
}

运行结果:

c++11:std::declval、decltype相关推荐

  1. c++11中的declval和decltype

    一.declval的介绍 std::declval定义在头文件中: template<class T> typename std::add_rvalue_reference<T> ...

  2. python制作统计图_刻意练习11:Python描述统计、简单统计图形

    学习计划 MyPlan11 主题:Python描述统计.简单统计图形 时间:8.5-8.11周内完成 参考资料:新书<谁说菜鸟不会数据分析python篇> 各位星友们,在这个星球里每个人都 ...

  3. c++11:std::chrono::time_point、time_t、std::localtime、std::gmtime、std::chrono::steady_clock

    template<class Clock,class Duration = typename Clock::duration> class time_point; 类模板 std::chr ...

  4. C++11: std::function<void()> func

    std::function介绍 类模版std::function是一种通用.多态的函数封装.std::function的实例可以对任何可以调用的目标实体进行存储.复制.和调用操作,这些目标实体包括普通 ...

  5. 拼多多11.11:无定金、不预售,“好牌子、好实惠”底价直降

    一向主张"每天都是11.11"的新电商平台拼多多揭晓了今年的11.11玩法.11月5日,拼多多宣布,今年"11.11"平台加码百亿补贴力度,联合国内外一百余家旗 ...

  6. 【抓包工具】win 10 / win 11:WireShark 下载、安装、使用

    目录 一.WireShark 下载 二.WireShark 安装 (1)双击运行安装程序 (2)Choose Components:选择组件 (3)Additional Tasks:附加任务 (4)C ...

  7. 2022/07/17、18 day10/11:Stream流、方法引用

    文章目录 1. Stream流 1.1 引言 1.2 流式思想概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理(传统方式) 1.6 练习:集合元素处理(Stream方式) 2. 方法 ...

  8. 【Git】win 10 / win 11:git 下载、安装

    目录 一.git 下载 二.git 安装 (1)继续之前,请阅读以下重要信息 (2)自定义选择安装位置 (3)选择组件 (4)创建开始菜单目录 (5)选择 Git 使用的默认编辑器 (6)调整新存储库 ...

  9. paste shell 分隔符_shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste,split)

    基本sort 最基本的s o r t方式为sort filename,按第一域进行分类(分类键0).实际上读文件时s o r t操作将行中各域进行比较,这里返回基于第一域s o r t的结果 [sam ...

最新文章

  1. 元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏
  2. Android监听HOME按键
  3. DM 源码阅读系列文章(二)整体架构介绍
  4. 深度解密Go语言之sync.map
  5. 页面加载完成之后,开始显示内容
  6. fis pure开发php,50个精品网站鉴赏
  7. 天翼云高可用虚拟IP(HAVIP)实践
  8. 清华姚班毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神碉堡!创世的快乐
  9. 保定学院计算机编程,惠普HP打印机驱动程序安装失败怎么办hewlett-packard上的文件...
  10. 量子场论考试题目解答
  11. HDU 5956 The Elder(树型DP+斜率优化)
  12. SPSS结果解读——【独立样本T检验】【方差齐性】
  13. 书法在计算机中的应用,书法在计算机中的编排-西安交通大学.pdf
  14. 倾角传感器精度校准检测
  15. 计算机毕业设计JAVA派大星水产商城mp4mybatis+源码+调试部署+系统+数据库+lw
  16. 软文营销如何建立独特内容让读者自动掉入“圈套”
  17. 小猫爪:S32K3学习笔记04-S32K3之LCU
  18. java实现批量下载图片并打包成zip
  19. winbox添加dhcp和nat
  20. 物联通服务器提示授权文件,管家婆物联通,手机上查看应收应付数据

热门文章

  1. 训练人物和摩托车的yolov4-tiny模型教程
  2. 将谷歌浏览器 Chrome 已安装的插件打包成 crx 给其它电脑离线安装 +【怎么安装Chrome插件】安装Chrome第三方插件
  3. 浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
  4. OpenCV颜色空间——Lab颜色空间
  5. java练习之输入一个字母,如果是小写,转换成大写并输出,如果是大写就不变化并输出。
  6. 我总结了五种常用聚类分析算法,推荐收藏
  7. caxa图文档服务器未启动,CAXA协同管理图文档
  8. MFC下载网页简单实现
  9. WPF 委托和事件实现子窗口回调函数, 实时刷新主窗口控件
  10. 70个经典的 Shell 脚本