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

前端之家收集整理的这篇文章主要介绍了如何使用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可以有不同的方法

猜你在找的Bash相关文章