比方说,出于解析的目的,想要跳过模板标识符列表的内容:
template<(valid code)>
^ ^
| from | to
首先想到的是盲目地找到第一个>,但这并不总是有效:
template<(valid code),template<(valid code)> >
^ ^
| from | to, oops
更好的方法是递归地跳过 < 和 > 对:
template<(valid code),template<(valid code)> >
^ ^
| from | to, better
然而,即使这种方法对于像这样的神秘但有效的杰作也失败了(来自 bits\random.h,第 69 行,GCC 4.7.x):
template<(...),bool = __w < static_cast<size_t>(...)>
^ ^ ^ ^ ^ ^
| 1 | 2 | 3 | 2 | 1 | where did 0 go?
那么我的问题是,找到任何有效模板标识符列表末尾的正确方法是什么?