smartparen 如何处理 c++ 模板的 <>

好像无法区分 vector<int> 和 a<b 这两种情况啊

感觉这种需求无法低成本地实现。

在这里,区分 less than 操作符和 template instantiation,需要依赖上下文。没有一个完整的 C++ 语法解析器是做不到的(甚至有的时候,需要引入额外关键字才能避免这种歧义)。

C++ 最早加入这个功能的时候,连编译器都无法分辨二义性(不过那个是泛型和 >> 的二义性),在后来编译器实现这个分析之前,嵌套的泛型参数得这样写 vector<vector<int> > (中间有个空格)