diff --git a/lib/astutils.cpp b/lib/astutils.cpp index e85d30b38..03ca05daf 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -45,19 +45,6 @@ #include #include -const Token* findAstNode(const Token* ast, const std::function& pred) -{ - const Token* result = nullptr; - visitAstNodes(ast, [&](const Token* tok) { - if (pred(tok)) { - result = tok; - return ChildrenToVisit::done; - } - return ChildrenToVisit::op1_and_op2; - }); - return result; -} - const Token* findExpression(const nonneg int exprid, const Token* start, const Token* end, diff --git a/lib/astutils.h b/lib/astutils.h index 6e23b1f5c..6bdde92b1 100644 --- a/lib/astutils.h +++ b/lib/astutils.h @@ -79,7 +79,20 @@ void visitAstNodes(T *ast, const TFunc &visitor) } while (true); } -const Token* findAstNode(const Token* ast, const std::function& pred); +template +const Token* findAstNode(const Token* ast, const TFunc& pred) +{ + const Token* result = nullptr; + visitAstNodes(ast, [&](const Token* tok) { + if (pred(tok)) { + result = tok; + return ChildrenToVisit::done; + } + return ChildrenToVisit::op1_and_op2; + }); + return result; +} + const Token* findExpression(const nonneg int exprid, const Token* start, const Token* end,