如何使用YouCompleteMe在vim中启用完成C模板类

当使用vim插件YouCompleteMe C代码完成我偶然发现了一个问题。
使用嵌套模板类可以使完成正常工作。

考虑下面的例子来重现行为:

#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

我认为,根据C的规则,你不能在这种情况下得到完成。

没有类型T的知识,我们不知道什么方法std :: vector< T>将有,因为每个instansiation的一个模板在C可以有不同的方法

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...