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. PHP设计模式 外观模式(Facade)
  2. Android开发者指南(15) —— Managing Virtual Devices
  3. FreeMarker 自动转义和格式化HTML和XML输出,预防xss
  4. Linux Shell常用技巧(二)
  5. SAP Fiori:why my filter by titleID does not work
  6. NSA泄露的恶意软件DoublePulsar感染了数万台Windows电脑
  7. JMeter java.lang.OutOfMemoryError: PermGen space错误
  8. ORACLE P6 21.12 系统虚拟机(VM)分享
  9. vscode主题 webstorm_vscode/webstorm快捷键
  10. FTP升级cisco2811 IOS 实战
  11. 韩顺平 教学资料下载
  12. 【读书笔记】《M型社会》大前研一
  13. 软件设计模式Day01--简单的模拟鸭子应用
  14. iterative-mergesort
  15. Linux m4a转mp3
  16. 一个简洁的背单词、背短语python程序——英文背记系统(自用)
  17. currency.js -用于处理货币值的小型轻量级 JavaScript 库(也可以处理数值计算精度问题等)
  18. 管理经济学-使用Python和Z3求解本量利分析
  19. PostgreSQL隐藏列(兼容oracle)
  20. 阿里云ACP/ACE认证考试指南

热门文章

  1. USB转TTL串口板使用问题
  2. 面向对象和面向过程的区别通俗理解
  3. YOLOX源码解析--全网最详细,建议收藏!
  4. 【软考题目】假设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录。
  5. 【财务】FMS财务管理系统---对账平台
  6. Java秋招面经大合集
  7. ssh 远程脚本执行 java: command not found
  8. 女子打扮时尚穿短裙 被8岁儿子指责像二奶
  9. mysql-server安装
  10. 游戏运营的十二大组成