使用场景

在C++中经常要用到很长的变量名,如果已经有变量和你将使用的变量是一个类型,即可使用decltype关键字

来申明一样的类型变量。

decltype原理

     返回现有变量类型,decltype是一个关键字,而不是一个函数,这有啥区别呢?decltype在编译阶段返回变量类

型,而不是在运行阶段传递不同变量返回不同值。

decltype使用范例

1、复杂已知变量类型

map<string, vector<string>> str_map;
decltype(str_map) str_map_new;

2、表达式返回值类型

int a, b;
decltype(a + b) a;

3、函数返回值

int foo(int i) {return i;
}
double foo(double d) {return d;
}template<typename T>
auto getNum(T t)->decltype(foo(t)) {return foo(t);
}

注意
1、decltype两个括号返回变量引用类型

int i;
decltype((i)) r = i;
decltype(i) a;

2、auto和decltype配合使用可以实现不同返回类型

C++11之decltype相关推荐

  1. C++11之decltype类型推导(使用场景、推导四规则、cv限定符)

    系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...

  2. c++11:decltype

    1.首先针对decltype有两种表达方法,分别是不带括号的和带括号的. 2.其次,对于这两种表达方式的区别体现在变量上: 只要是带了括号就取被推断变量的引用,不带括号就直接取被推断变量定义时的类型 ...

  3. C++11新增的关键字decltype(auto)

    一.函数模板存在的类型问题 template<class T1,class T2> void fun(T1 a, T2 b) {(T1 or T2?)y = a + b; } 语句y = ...

  4. c++11中的declval和decltype

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

  5. C++11 decltype类型推导详解

    decltype decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导. decltype 是"declare type" ...

  6. C++11新特性之decltype类型推导

    ​ 目录 一.decltype关键字 二.decltype的推导规则 1.表达式为单独变量 2.表达式为函数调用 3.表达式为左值,或者被()包围 三. decltype的应用 在前面一章,小编已经对 ...

  7. decltype 和 auto

    返回类型推导 decltype decltype 推导规则 编译器将根据以下三条规则得出结果: 如果 exp 是一个不被括号( )包围的表达式,或者是一个类成员访问表达式,或者是一个单独的变量,那么 ...

  8. c++ enum 给定类型_C++11作用域内枚举enum

    在C++11之前的枚举(enum),是没有办法两个枚举(enum)内有相同枚举名的.如果还不知道C++中枚举(enum)是什么,可以看这篇:枚举enum 如:苹果和桔子都有大,中,小.写个代码来说明下 ...

  9. C++11、C++14、C++17、C++20新特性总结(5万字详解)

    文章目录 C++ 11是什么,C++ 11标准的由来 C++ auto类型推导完全攻略 auto 类型推导的语法和规则 auto 的高级用法 auto 的限制 auto 的应用 使用 auto 定义迭 ...

最新文章

  1. dotnet core高吞吐Http api服务组件FastHttpApi
  2. python语言及其应用下载_Python语言及其应用 中文pdf完整版[13MB]
  3. 车载wince系统刷界面ui_2020年值得关注的10个UI设计趋势!
  4. leetcode —— 面试题 17.08. 马戏团人塔
  5. POJ1703-Find them, Catch them
  6. mysql主主同步机制+keepalived实现MySQL高可用
  7. python控制键盘游戏内无效_关于python的游戏《兔子和獾》代码写到用键盘输入WASD控制兔子移动时,兔子移动不了。但是。。。...
  8. 通信协议(二)——SPI协议
  9. c语言中的三角函数公式,tan三角函数公式有哪些
  10. 搞清楚p问题、NP问题、NP完全问题和NP难问题
  11. 为什么visio输出图片俩边有留白_Microsoft Office Visio导出图片添加边界的操作教程...
  12. Maven第7篇:聚合、继承、单继承问题详解
  13. java 爬虫抢票_抢票爬虫 - nkandkn - 博客园
  14. Ajax+WCF+MySQL实现数据库部署并调用
  15. 2020秋季校园招聘深信服、噢易云、绿盟面筋
  16. CSS样式、字体样式、基本选择器的基础笔记
  17. nodeJS与npx之间的三两事
  18. 北京大学,南下布局!
  19. 已解决(Python爬虫requests库报错 请求异常SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool
  20. 【C语言】指针终结者-初阶

热门文章

  1. response setHeader 设置下载中文文件名乱码问题
  2. java七夕实现爱心
  3. input框输入身份证时实现动态脱敏
  4. 《“理想我”与“现实我”》
  5. 【Android】Android Window
  6. 使用Xshell连接到AWS云主机
  7. python关键词对联_使用百度 AI 进行智能写诗 智能春联
  8. PCB过孔的孔径大小对通流的影响
  9. 干货分享:小程序项目实践和经验总结
  10. 考计算机854的学校,2020年哈尔滨工业大学854计算机基础硕士研究生入学考试科目大纲...