decltype的使用
从语义上说,decltype的设计适合于通用库编写者与编程新手。总体上说,对于目标对象或函数,由decltype推导出的类型与源码中的定义可精确匹配。而正如sizeof操作符一样,decltype亦不需对操作数求值。
- 若表达式e指向一个 局部变量、 命名空间作用域变量、 静态成员变量或函数参数,那么返回类型即为该变量(或参数)的“声明类型”;
- 若e是一个 左值(lvalue,即“可寻址值”),则decltype(e)将返回T&,其中T为e的类型;
- 若e是一个x值(xvalue),则 返回值为T&&;
- 若e是一个纯 右值(prvalue),则返回值为T。
#include <algorithm>#include <iostream>#include <iterator>#include <ostream>#include <string>#include <utility>#include <vector>using namespace std;struct Plus {template <typename T, typename U>auto operator()(T&& t, U&& u) const-> decltype(forward<T>(t) + forward<U>(u)) {return forward<T>(t) + forward<U>(u);}};int main() {vector<int> i;i.push_back(1);i.push_back(2);i.push_back(3);vector<int> j;j.push_back(40);j.push_back(50);j.push_back(60);vector<int> k;vector<string> s;s.push_back("cut");s.push_back("flu");s.push_back("kit");vector<string> t;t.push_back("e");t.push_back("ffy");t.push_back("tens");vector<string> u;transform(i.begin(), i.end(), j.begin(), back_inserter(k), Plus());transform(s.begin(), s.end(), t.begin(), back_inserter(u), Plus());for_each(k.begin(), k.end(), [](int n) { cout << n << " "; });cout << endl;for_each(u.begin(), u.end(), [](const string& r) { cout << r << " "; });cout << endl;}
decltype的使用相关推荐
- C++关键字decltype
decltype 关键字用于检查实体的声明类型或表达式的类型及值分类. 语法 decltype ( expression ) 使用 // 尾置返回允许我们在参数列表之后声明返回类型 template ...
- C++——auto、decltype、返回类型后置、模板别名:using =、nullptr
1.3.声明 1.3.1.auto 以前版本关键字auto是一个存储类型说明符,表示动态存储还是静态存储,与static关键字对应,第九章也写了,C++11将其用实现自动类型推断(第三章).必须显示初 ...
- C++11 类型推导decltype
我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行.RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通 ...
- C++ decltype类型指示符
decltype 说明符作用是选择并返回操作数的数据类型: const int ci=0,&pi=ci; decltype(ci) x = 0; //x的类型为 const int declt ...
- C++11 新增关键字decltype学习
decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导. decltype 是"declare type"的缩写,译为&q ...
- decltype判断变量或表达式类型
文章目录 1 decltype判断变量或表达式类型 1 decltype判断变量或表达式类型 在C++11中增加了判断变量或表达式类型的供能,decltype (expr是变量或表达式expr的已声明 ...
- c++ decltype
decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导.不了解 auto 用法的读者请转到<C++ auto>. decltype ...
- C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype
1.constexpr和常量表达式 1.1 常量表达式 定义:变量的值在编译器的时候就可以得到是一个常量 eg. const int i = 0; 1.2 constexpr变量 让编译器来验证变量的 ...
- decltype 遇到计算结果为左值的表达式会得到引用类型
c++11支持用decltype推断变量/表达式的类型,与auto推断不同,decltype并不会计算表达式的值. decltype会准确的返回变量/表达式的类型,即使是数组这种比较复杂的类型也不例外 ...
- C++11 auto和decltype关键字
auto 可以用 auto 关键字定义变量,编译器会自动判断变量的类型.例如: auto i =100; // i 是 int auto p = new A(); // p 是 A* auto k = ...
最新文章
- 复习java基础第二天(异常处理)
- python待遇如何-Python薪资待遇到底是多少?老男孩python学习
- 海量数据处理分析_BI
- Spring-boot配置JedisShardInfo
- matlab中循环读入文件内容,[转载]Matlab利用load循环读入数据文件
- 报名已近500人丨基于AWR/ASH故障分析案例分享
- mysql 单表多级查询_mysql单表与多表查询
- [leetcode] 140. 单词拆分 II
- jquery on()绑定的点击事件在js动态新添加的元素上无效
- (六)授权(下):自定义permission
- AI Image Enlarger黑科技-人工智能无损放大图片素材不失真
- c# .net对接企业微信小助手 接口请求时长预警
- matlab动画制作详解
- 计算机视频DVI接口,HDMI、DVI 电脑为什么会有这么多种视频接口?
- MFC入门(三)-- MFC图片/文字控件(循环显示文字和图片的小程序)
- 【服务器数据恢复】存储raid5磁盘阵列数据恢复案例
- c语言用指针分离字符串数字与字符,c语言实验报告,指针的应用分别输出字符串中的数字和其他字符(共10篇).docx...
- 计算机院校都看重保研er的哪些能力?
- NLP:词典加载及切分算法
- 虚拟网站禁用php,虚拟主机配置,建议禁止php函数列表,禁用不安全的PHP函数