Hi, Here is an example
Expr Rewrite_(const CallNode* call_node, const Expr& post) final {
const Call& ref_call = GetRef<Call>(call_node);
...
...
const auto* post_node = post.as<CallNode>();
....
This is a fairly standard convention in TVM C++ codebase. I am really confused about when we should pass Objects by pointer and when by const reference. It seems you can easily convert between the two, then why not always just pass Object pointer or reference/const reference?