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

时间:2015-08-12 16:09:29

标签: c++ expression-templates boost-proto

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

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

1 个答案:

答案 0 :(得分:3)

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

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