当使用vim插件YouCompleteMe C代码完成我偶然发现了一个问题。
使用嵌套模板类可以使完成正常工作。
原文链接:https://www.f2er.com/bash/388950.html使用嵌套模板类可以使完成正常工作。
考虑下面的例子来重现行为:
#include <vector> template<class T> class foo { public: void Init(); private: struct bar { int foobar; }; bar one_bar; std::vector<foo<T>::bar> some_bars; }; template<class T> void foo<T>::Init(){ one_bar.foobar = 0; // completion as expected some_bars.at(0).foobar = 0; // no completion neither for "at" nor for "foobar" }
“some_bars”的代码完成不工作,而“one_bar”正常工作。
如何完成此代码的工作?这个问题是否与设置相关,应该实际工作还是YCM中的错误?
我的系统是debian jessie / sid基于,vim版本7.4,YCM最新版本从GitHub。
编辑:
有类似的问题报告在YCMs错误跟踪:
https://github.com/Valloric/YouCompleteMe/issues/243
https://github.com/Valloric/YouCompleteMe/issues/530
似乎是一个bug在clang而不是在ycm。有人可以确认吗?
编辑2:
我在YCM问题跟踪器中打开了另一个问题。
https://github.com/Valloric/YouCompleteMe/issues/1170
目的是获得更多关于clang中的bug的信息,最后是在clang问题跟踪器中生成一个bug报告。
编辑3:
我遵循从RedX提出的程序,并喂我的代码在clang获得完成。
Clang没有为代码中讨论的位置提供任何建议。
这明显是为什么YCM没有在vim中提出建议的原因,它与YCM或vim无关。
clang问题跟踪器中的错误报告已提交:
http://llvm.org/bugs/show_bug.cgi?id=20973