Merge pull request #12243 from ethereum/forEachFix

Minor fix to forEach on Yul AST nodes.
This commit is contained in:
chriseth 2021-11-05 14:10:00 +01:00 committed by GitHub
commit 213ce785c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -111,8 +111,7 @@ template <
> >
struct ForEach: Base struct ForEach: Base
{ {
template<typename Callable> ForEach(Visitor& _visitor): visitor(_visitor) {}
ForEach(Callable&& _visitor): visitor(std::forward<Callable>(_visitor)) {}
using Base::operator(); using Base::operator();
void operator()(Node& _node) override void operator()(Node& _node) override
@ -121,7 +120,7 @@ struct ForEach: Base
Base::operator()(_node); Base::operator()(_node);
} }
Visitor visitor; Visitor& visitor;
}; };
} }
@ -130,7 +129,7 @@ struct ForEach: Base
template<typename Node, typename Entry, typename Visitor> template<typename Node, typename Entry, typename Visitor>
void forEach(Entry&& _entry, Visitor&& _visitor) void forEach(Entry&& _entry, Visitor&& _visitor)
{ {
detail::ForEach<Node, std::decay_t<Visitor>>{std::forward<Visitor>(_visitor)}(std::forward<Entry>(_entry)); detail::ForEach<Node, Visitor&>{_visitor}(_entry);
} }
} }