草庐IT

clang_complete

全部标签

c++ - g++ vs intel/clang 参数传递顺序?

考虑以下代码(LWS):#include#includeinlinevoidtest(conststd::chrono::high_resolution_clock::time_point&first,conststd::chrono::high_resolution_clock::time_point&second){std::cout您必须多次运行它,因为有时并没有明显的区别。但是当first和second的计算时间存在明显差异时,g++下的结果如下:13633762393631751363376239363174以及intel和clang下的以下内容:13633762679714

c++ - 为什么在这个递归斐波那契代码中 GCC 生成的程序比 Clang 更快?

这是我测试过的代码:#include#includeusingnamespacestd;#defineCHRONO_NOWchrono::high_resolution_clock::now()#defineCHRONO_DURATION(first,last)chrono::duration_cast>(last-first).count()intfib(intn){if(n当然,计算Fibonacci数的方法要快得多,但这是一个很好的小压力测试,侧重于递归函数调用。除了使用chrono来测量时间之外,代码没有其他内容。首先,我使用-O3优化在OSX上的Xcode中运行了几次测试(这

c++ - LLVM 和 Clang 无法为支持的架构编译

在Ubuntu64位下我得到了llc--versionLLVM(http://llvm.org/):LLVMversion3.1Optimizedbuildwithassertions.BuiltOct152012(18:15:59).Defaulttarget:x86_64-pc-linux-gnuHostCPU:btver1RegisteredTargets:arm-ARMmips-Mipsmips64-Mips64[experimental]mips64el-Mips64el[experimental]mipsel-Mipselthumb-Thumbx86-32-bitX86:P

c++ - 为什么 clang 不使用 NRVO 对此进行优化?

我试图解释为什么一个相当不错的C++11编译器(clang)没有优化这段代码,并且想知道这里是否有人有意见。#include#defineSLOWstructA{A(){}~A(){std::cout如果我用#defineSLOW注释掉并用-s优化运行它,我得到HelloWorld!AmoveAd'tor0x7fff5fbff9f0Ad'tor这是预期的。如果我在启用#defineSLOW并使用-s优化的情况下运行它,我得到:HelloWorld!AcopyAmoveAd'torAd'tor0x7fff5fbff9e8Ad'tor这显然不是很好。所以问题是:为什么我没有看到在“SLOW

c++ - OS X/Clang 不会使用 c++11 头文件

系统信息:OSX10.10.5,Clang=AppleLLVM版本6.1.0(clang-602.0.53)(基于LLVM3.6.0svn),cmake=2.8.12.2假设我有一些简单的文件,main.cpp:#include#include#includeintmain(void){std::vectorv{1,2,3,4};intsum=std::accumulate(v.begin(),v.end(),0);printf("Sum=%d\n",sum);return0;}当我运行“clang++-stdlib=libc++-std=c++11main.cpp”时出现错误:mai

c++ - GNU C++ 和 Clang 中的模板实例化

看起来Clang(3.8)和GNUC++(4.9)中模板实例化的规则不一样。这是一个例子:#includetemplateclassAssert{Assert();//privateconstructorforAssert};templateclassAssert{//implicitpublicconstructorforAssert};templateclassA{};templateTfoo(A){returnT(N-1);}templateTfoo(A){//fooisnotdefinedforN=0Assert();returnT(0);}intmain(intargc,ch

c++ - Clang 'blocks' 是如何工作的?

http://clang.llvm.org/docs/BlockLanguageSpec.txt看起来真的很酷。但是,我不明白。我没有看到它的例子。我没有看到难以用C++原样表达但在block中表达却微不足道的想法示例。谁能给我讲讲这个? 最佳答案 从本质上讲,block是一种将代码和范围作为数据传递的方式。它们在其他一些语言中称为闭包和匿名函数。这是一个article包含更多详细信息和代码示例。 关于c++-Clang'blocks'是如何工作的?,我们在StackOverflow上找

c++ - 名称查找问题,GCC 和 clang 不同意

这个问题在这里已经有了答案:gcccancompileavariadictemplatewhileclangcannot(1个回答)关闭7年前。正如ecatmur所指出的,这个问题已经有了答案here.这个问题显然不是trailingreturntypeusingdecltypewithavariadictemplatefunction的重复问题.它实际上试图提出一个更简单的解决方案来解决该线程中的问题。问题是根据标准,这个解决方案是否正确,因为GCC和clang不同意。只要更仔细地阅读问题,您就会意识到这一点。这个问题的灵感来自thisone.我正在尝试提出一个比已经提供的解决方案更

c++ - 成员未归零,一个 clang++ 错误?

考虑以下代码:classA{public:inti;A(){}};classB{public:Aa;inti;};intmain(){B*p=newB{};std::coutia.i在clang++中使用-std=c++11编译,p->i结果为零,但p->a.i不是。只要它的类没有用户提供的构造函数,整个对象不应该被清零吗?编辑:由于评论中有一些广泛的讨论,我认为最好在此处添加一些标准摘录:Tovalue-initializeanobjectoftypeTmeans:ifTisa(possiblycv-qualified)classtype(Clause9)withauser-prov

c++ - g++ 和 clang++ 在 `std::make_index_sequence` 和 `std::index_sequence` 用于模板参数默认类型时的不同行为

另一个“g++和clang++之间谁是正确的?”C++标准专家的问题。给定以下代码#includetemplate>structfoo;templatestructfoo>{};templatevoidbar(fooconst&){}intmain(){bar(foo{});}我看到g++编译时clang++给出了以下错误tmp_003-14,gcc,clang.cpp:32:4:error:nomatchingfunctionforcallto'bar'bar(foo{});^~~tmp_003-14,gcc,clang.cpp:27:6:note:candidatetemplate