@@ -93,8 +93,8 @@ struct ForwardTraversal {
9393 return evalCond (tok, ctx).second ;
9494 }
9595
96- template <class T , REQUIRES (" T must be a Token class" , std::is_convertible<T*, const Token*> )>
97- Progress traverseTok (T* tok, std::function<Progress(T*)> f, bool traverseUnknown, T** out = nullptr) {
96+ template <class T , class F , REQUIRES (" T must be a Token class" , std::is_convertible<T*, const Token*> )>
97+ Progress traverseTok (T* tok, F f, bool traverseUnknown, T** out = nullptr ) {
9898 if (Token::Match (tok, " asm|goto|setjmp|longjmp" ))
9999 return Break (Analyzer::Terminate::Bail);
100100 else if (Token::simpleMatch (tok, " continue" )) {
@@ -134,8 +134,8 @@ struct ForwardTraversal {
134134 return Progress::Continue;
135135 }
136136
137- template <class T , REQUIRES (" T must be a Token class" , std::is_convertible<T*, const Token*> )>
138- Progress traverseRecursive (T* tok, std::function<Progress(T*)> f, bool traverseUnknown, unsigned int recursion=0) {
137+ template <class T , class F , REQUIRES (" T must be a Token class" , std::is_convertible<T*, const Token*> )>
138+ Progress traverseRecursive (T* tok, F f, bool traverseUnknown, unsigned int recursion=0 ) {
139139 if (!tok)
140140 return Progress::Continue;
141141 if (recursion > 10000 )
@@ -206,22 +206,22 @@ struct ForwardTraversal {
206206 }
207207
208208 Progress updateTok (Token* tok, Token** out = nullptr ) {
209- std::function< Progress (Token*)> f = [this ](Token* tok2) {
209+ auto f = [this ](Token* tok2) {
210210 return update (tok2);
211211 };
212212 return traverseTok (tok, f, false , out);
213213 }
214214
215215 Progress updateRecursive (Token* tok) {
216216 forked = false ;
217- std::function< Progress (Token*)> f = [this ](Token* tok2) {
217+ auto f = [this ](Token* tok2) {
218218 return update (tok2);
219219 };
220220 return traverseRecursive (tok, f, false );
221221 }
222222
223- template <class T >
224- T* findRange (T* start, const Token* end, std::function< bool (Analyzer::Action)> pred) {
223+ template <class T , class F >
224+ T* findRange (T* start, const Token* end, F pred) {
225225 for (T* tok = start; tok && tok != end; tok = tok->next ()) {
226226 Analyzer::Action action = analyzer->analyze (tok, Analyzer::Direction::Forward);
227227 if (pred (action))
@@ -232,7 +232,7 @@ struct ForwardTraversal {
232232
233233 Analyzer::Action analyzeRecursive (const Token* start) {
234234 Analyzer::Action result = Analyzer::Action::None;
235- std::function< Progress ( const Token*)> f = [&](const Token* tok) {
235+ auto f = [&](const Token* tok) {
236236 result = analyzer->analyze (tok, Analyzer::Direction::Forward);
237237 if (result.isModified () || result.isInconclusive ())
238238 return Break ();
0 commit comments