什么是 Expression Templates

Expression Templates 是一种 C++ 模板元编程技术,它通过在编译时构建按需执行的计算表达式,从而生成高效的代码。简单来说,通过 Expression Templates,我们可以实现惰性求值和消除因为中间结果而创建的临时变量。

一个常规示例

我们构造了一个MyVector类,并且重载了MyVector+*操作符,实现两个MyVector中相同下标元素的+*操作。 对于这样的需求我们很容易写出形如下面代码的一个简单的实现:

#include <cassert>
#include <iostream>
#include...

对于一个标准的 c++容器来说,我们可以很容易在运行时使用迭代器和 range-based for loop 来遍历其中的每一个元素。但是对于std::tuple,却不能像普通的容器那样去遍历它。

std::tuple 简介

std::tuple是一个具有固定大小,包含不同类型值的集和。与之相似的是std::pair,只不过std::pair只能容纳两个元素, 而std::tuple可以容纳许多元素:

std::tuple<int, double, const char*> tup {42, 10.5, "hello"};

// or with CTAD(class template argument...