我想生成具有从子项到父项的“反向”引用的表达式树。有没有一种方法可以自定义 Proto 生成器或域,以便表达式包装器类(使用 proto::extends<>
)包含对父表达式的引用?
这背后的目标是创建缓存评估结果的表达式树,以便可以有效地重新评估它们。我的策略是更新终端值,然后沿着树向上移动,将父节点标记为“脏”,以便在计算根表达式时重新计算它们。
最佳答案
您描述的技术行不通。表达式是自下而上构建的。对于表达式 a + (b * c)
, 父节点 ( +
) 在构造子节点 ( b * c
) 时不存在。 child 无法存储指向尚不存在的对象的指针。
您必须使用转换或上下文对表达式进行后处理以设置父指针。
关于c++ - 如何添加对 Boost.Proto 表达式的父引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970390/