在vs installer中,选中clang
在项目配置里,配置一下,即可。
详见 Clang/LLVM support in Visual Studio projects | Microsoft Docs
第一个的话,可以参考标准文档Templates文档14.6.1 Locally declared namesA template-parameter shall not be redeclared within its scope (including nested scopes). A template- parameter shall not have the same name as the template name.
[Example:
template<class T, int i>class Y {
int T// error: template-parameter redeclared
void f() {
char T// error: template-parameter redeclared
}
}
template<class X>class X// error: template-parameter redeclared
—end example ]:
然后有意思的是,Clang的源代码非常不厚道的指出了VC++这不符标准的一点, clang: SemaTemplate.cpp Source File
00442 /// DiagnoseTemplateParameterShadow - Produce a diagnostic complaining
00443 /// that the template parameter 'PrevDecl' is being shadowed by a new
00444 /// declaration at location Loc. Returns true to indicate that this is
00445 /// an error, and false otherwise.
00446 void Sema::DiagnoseTemplateParameterShadow(SourceLocation Loc, Decl *PrevDecl) {
00447 assert(PrevDecl->isTemplateParameter() &&"Not a template parameter")
00448
00449 // Microsoft Visual C++ permits template parameters to be shadowed.
00450 if (getLangOpts().MicrosoftExt)
00451 return
00452
00453 // C++ [temp.local]p4:
00454 // A template-parameter shall not be redeclared within its
00455 // scope (including nested scopes).
00456 Diag(Loc, diag::err_template_param_shadow)
00457 <<cast<NamedDecl>(PrevDecl)->getDeclName()
00458 Diag(PrevDecl->getLocation(), diag::note_template_param_here)
00459 return
00460 }
00461
00462 /// AdjustDeclIfTemplate - If the given decl happens to be a template, reset
00463 /// the parameter D to reference the templated declaration and return a pointer
00464 /// to the template declaration. Otherwise, do nothing to D and return null.
00465 TemplateDecl *Sema::AdjustDeclIfTemplate(Decl *&D) {
00466 if (TemplateDecl *Temp = dyn_cast_or_null<TemplateDecl>(D)) {
00467 D = Temp->getTemplatedDecl()
00468 return Temp
00469 }
00470 return nullptr
00471 }
至于第二个的话,改成C++11的enum class就对了,enum是不对的,因为enum是没有自己的scope的,enum class才有。
你从vim的官网下载相应的插件,一般插件都有安装说明,另外自动补全的插件vim上有很多,vim在windows平台上叫gvim,插件一般在plugin目录。。。.YourCompleteMe使用说明-for-windows2.本程序YCM部分使用的几乎是该作者提供的文件。3.使用步骤:a.确保电脑上安装有python2.7,并且python.exe在path目录里。b.在_vimrc中注释掉neocpmplete插件,反注释YourCompleteMe.c.打开vim,输入命令:YcmDebug.如果有看到clang版本信息号,serverrunningat,serverprocessID等即表示YCM已经可以使用。d.对于C++补全,首先确保电脑上安装有MinGW或者CLang(折腾去吧)。然后运行如下命令找到C++的库文件:gcc:POSIXshell:g++-E-xc++--vsearchstartshere:和Endofsearchlist.之间的路径就是C++库路径。按照默认配载的格式添加进去。你也可以直接下载我克隆的MinGW,把它放在C盘根目录,再把MinGW/bin目录加到path中。e.经测试,XP系统YCM不可用。WIN7X86和64可以正常使用。原因未知。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)