c++ - 如何添加对 Boost.Proto 表达式的父引用?

标签 c++ expression-templates boost-proto

我想生成具有从子项到父项的“反向”引用的表达式树。有没有一种方法可以自定义 Proto 生成器或域,以便表达式包装器类(使用 proto::extends<> )包含对父表达式的引用?

这背后的目标是创建缓存评估结果的表达式树,以便可以有效地重新评估它们。我的策略是更新终端值,然后沿着树向上移动,将父节点标记为“脏”,以便在计算根表达式时重新计算它们。

最佳答案

您描述的技术行不通。表达式是自下而上构建的。对于表达式 a + (b * c) , 父节点 ( + ) 在构造子节点 ( b * c ) 时不存在。 child 无法存储指向尚不存在的对象的指针。

您必须使用转换或上下文对表达式进行后处理以设置父指针。

关于c++ - 如何添加对 Boost.Proto 表达式的父引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970390/

相关文章:

c++ - 为什么这个 proto/phoenix 玩具示例会崩溃?

c++ - 使用 Boost.Proto 构建 Eigen 表达式模板

c++ - Boost.原型(prototype) : Is it possible for Proto transforms to evaluate a mixture expression of matrix & vector?

c++ - MFC 与 ActiveX 的 ATL

c++ - 在 C++ 中将 wchar_t 转换为 wstring

c++ - 我怎样才能使它与 C++ 中的每个定界符一起工作?

c++ - 表达式模板 + CRTP + AMP == 内核生成

C++11:防止将对象分配给引用

c++ - libstdc++.so.6 : cannot open shared object file: No such file or directory

c++ - 为什么游戏不使用数学表达式模板?