C++模板元编程---折叠表达式
基础博客:https://blog.csdn.net/qq_35976351/article/details/106985750
折叠表达式同样是运行在编译期间的,先给出基本的规则:
注意,一元表达式只有&&
、||
或者,
有缺省值,三者空包的默认值分别是:true
、false
和void()
所有支持的运算符是:
+ - * / % ^ & | = < > << >> += -= *= /= %= ^= &= |= <<= >>= == != <= >= && || , .* ->*
给出一元折叠代码示例:
#include <iostream>template <typename... Args>
auto SubOpRight(Args&&... args) {return (args - ...);
}template <typename... Args>
auto SubOpLeft(Args&&... args) {return (... - args);
}int main() {// ([-1] - [-2]) - [-3] 4auto lv = SubOpLeft(-1, -2, -3);// [-1] - ([-2] - [-3]) -2auto rv = SubOpRight(-1, -2, -3);std::cout << lv << ", " << rv << std::endl;return 0;
}
二元表达式,相当于有了初始值,代码示例:
#include <iostream>template <typename... Args>
auto SubOp2Right(Args&&... args) {return (args - ... - 1);
}template <typename... Args>
auto SubOp2Left(Args&&... args) {return (1 - ... - args);
}int main() {// ((1 - [-1]) - [-2])) - [-3] 7auto lv = SubOp2Left(-1, -2, -3);// [-1] - (([-2] - ([-3] - 1))) -3auto rv = SubOp2Right(-1, -2, -3);std::cout << lv << ", " << rv << std::endl;return 0;
}
C++模板元编程---折叠表达式相关推荐
- 编程实现算术表达式求值_用魔法打败魔法:C++模板元编程实现的scheme元循环求值器...
本文使用 Zhihu On VSCode 创作并发布 [TOC] 前言 寒假时沉迷C++模板元编程,写了个简单的Scheme元循环求值器.可以用类似Scheme的语法写出这样的C++模板代码: _&l ...
- C++模板元编程 入门简介
最近一直在看STL和Boost,源码里边好多涉及到模板元编程技术,简单了解一下,备忘(Boost Python中的涉及模板元的部分重点关注一下). 范例引入 // 主模板 template<in ...
- 现代C++模板元编程基础
元函数的基础介绍 C++的模板元编程是函数式编程,所以函数是一等公民.一切在编译期间执行的函数都可以称为元函数.元函数有struct和constexpr两种定义方式,前者是一直使用的,后者是C++11 ...
- C++ 模板元编程简介
文章目录 1.概述 2.模板元编程的作用 3.模板元编程的组成要素 4.模板元编程的控制逻辑 4.1 if 判断 4.2 循环展开 4.3 switch/case 分支 5.特性.策略与标签 6.小结 ...
- 跟我学c++高级篇——模板元编程之十一鸭子类型
一.鸭子类型 鸭子类型不是从c++中出现的,duck typing这种称呼在Python中比较多见.那么什么是鸭子类型呢?它是动态类型的一种风格,只要是对象的特征(其方法和属性集)和某个类型一致,就认 ...
- 闭关之 C++ 函数式编程笔记(四):monad 和 模板元编程
目录 第十章 monad 注意 10.1 仿函数并不是以前的仿函数 10.1.1 处理可选值 10.2 monad: 更强大的仿函数 10.3 基本的例子 10.4 range 与 monad 的嵌套 ...
- C++高阶必会操作--模板元编程
泛型编程大家应该都很熟悉了,主要就是利用模板实现"安全的宏",而模板元编程区别于我们所知道的泛型编程,它是一种较为复杂的模板,属于C++的高阶操作了,它最主要的优点就在于把计算过程 ...
- 最好的 C++ 模板元编程干货!
链接 | https://www.cnblogs.com/liangliangh/p/4219879.html 所谓元编程就是编写直接生成或操纵程序的程序,C++ 模板给 C++ 语言提供了元编程的能 ...
- 模板元编程实现素数判定
模板元编程(英语:Template metaprogramming:缩写:TMP)是一种元编程技术,不夸张的说,这项技术开启了一种新的C++编程方式.编译器使用模板产生暂时性的源码,然后再和剩下的源码 ...
最新文章
- 从粗放到精细,如何用AI技术实现信息流广告投放的降本增效
- xHTML+div布局:三个div,两边div宽度固定,中间div宽度自适应
- [算法笔记] 爬楼梯
- 牛客题霸 [数组中出现次数超过一半的数字] C++题解/答案
- 什么是语音复用设备?
- 安卓向服务器发送List数据
- NLP《语言模型(二)-- 神经网络NNLM语言模型》
- C语言相关问题(1)
- 【02】Java进阶:17-单例设计模式、多例设计模式、枚举、工厂设计模式、Lombok
- IE疑难杂症之已取消网页导航--该站点安全证书的吊销信息不可用
- 工作中常见的两种谬误
- 风生水起的VR直播丨VR直播市场何时迎来爆发期?
- python解释器cpython的源码简要介绍
- Process finished with exit code 1 解决方法
- 插装式比例插装阀比例节流阀比例顺序阀放大器
- 新的一年强势推荐5个免费的在线工具
- Kubeadm安装高可用的K8S集群--多master单node
- 中国无线物联网传感器市场现状研究分析与发展前景预测报告(2022)
- fastjson首字母大写的几种方法
- TIA博途V16版本中如何进行项目的归档和恢复?