草庐IT

clang_complete

全部标签

c++ - 为什么 clang 无法使用默认的 integer_sequence 实例化嵌套的可变参数模板?

考虑一个例子:#includetemplatestructpack{staticconstexprstd::size_tsize=sizeof...(Ts);};template>structipack;templatestructipack,std::index_sequence>{staticconstexprstd::size_tsize=sizeof...(Ts);};template>structvpack;templatestructvpack>,std::index_sequence>{staticconstexprstd::size_tsize=sizeof...(Ts

c++ - clang 与 gcc : variadic lambda captures

我正在尝试在内部lambda中捕获可变参数lambda参数并在那里使用它。例如,请考虑以下代码:intmain(){autofirst=[&](auto&&...one){autosecond=[&](auto&&...two){return((one*two)+...);};returnsecond(one...);};returnfirst(5);}这适用于gcc9但无法使用clang8(https://godbolt.org/z/i2K9cK)。使代码编译的一种方法是显式捕获[&one...],但我想知道这是否是clang中的错误。同样有趣的是:将返回语句更改为直接扩展one的内

c++ - 为什么gcc/clang要用两个128bit的xmm寄存器来传递一个值?

所以我偶然发现了一些我想了解的东西,因为它让我头疼。我有以下代码:#include#includetypedefunion{struct{floatx,y,z,w;}v;__m128m;}vec;vec__attribute__((noinline))square(veca){vecx={.m=_mm_mul_ps(a.m,a.m)};returnx;}intmain(intargc,char*argv[]){floatf=4.9;veca=(vec){f,f,f,f};vecres=square(a);//?printf("%f%f%f%f\n",res.v.x,res.v.y,re

c++ - std::visit for variant 无法在 clang 5 下编译

这个问题在这里已经有了答案:getforvariantsfailunderclang++butnotg++(1个回答)关闭4年前。std::visit的以下使用在gcc7.2下可以正确编译,但在clang5.0下无法编译。有谁知道问题出在哪里?#includestructS1{intfoo(){return0;}};structS2{intfoo(){return1;}};usingV=std::variant;intbar(){Vv;returnstd::visit([](auto&s){returns.foo();},v);}第一个错误是这样的:include/c++/7.2.0/

c++ - Clang 和 Intel 无法编译此 CRTP 代码

我编写了一个使用大量C++11元编程技术和CRTP的小型库,并且它在g++4.7.2下编译得很好现在,我尝试用Intelicpc13.0.0.079编译它,它产生了数百个错误。所以我尝试一个接一个地隔离问题。所以,首先,考虑这段代码,它在g++4.7.2下编译没有问题#includetemplateclassCrtp,typenameType>structBase{};templatestructDerived:publicBase{Derived():Base(){;}};intmain(){Derivedx;return0;}icpc和clang都无法编译这段代码:test_crt

c++ - 带有大括号的 char 数组的非静态成员初始化在 gcc 中给出了一个错误,而不是在 clang 中

考虑以下代码:#includeclassA{charname[40]={"Blank"};//notethebracesherepublic:constchar*getName(){returnname;}};intmain(){Aa;std::cout它在gcc(最新版本5.2.0)中给出错误:prog.cpp:5:28:error:invalidconversionfrom'constchar*'to'char'[-fpermissive]charname[40]={"Blank"};^但clang并非如此,它可以使用-std=c++11-pedantic-Wall完美编译。在这里

github, git, google: clang-前端插件-给各种无花括号的“块”加花括号-基于llvm15--clang-plugin-add-brace-----google镜像

处理的语句case术语约定或备忘case起止范围:从冒号到下一个’case’开头,简称有:case内、case内容Ast:Abstractsyntaxtree:抽象语法树没插入花括号的case若case内,以下任一条成立,则跳过该case即不会对该case内容用花括号包裹.有#define、有#include、有直属变量声明、空case、有宏调用详述预处理回调收集#include指令、宏定义CollectIncMacro_PPCb:CollectInlucdeMacroPPCallbacks:收集Inlucde和Macro的预处理回调收集#include、#define,以判断case起止范围

使用 Clang 从 Linux 交叉编译到 Windows

我正在尝试使用Clang将C应用程序从Linux(64位)交叉编译到Windows(64位)。我读了pageoncross-compilation,这不是很有帮助。作为一个简单的测试,我在test.c中有如下代码:#includeintmain(){puts("helloworld");return0;}到目前为止,我最好的猜测是clang-otest-targetx86_64-win64-?ABI?测试.c。但是,我不知道ABIWindows64位使用什么。当我用目标三元组x86_64-win64-abcdefg运行clang时,它似乎编译得很好——也就是说,它没有错误地完成并生成了

windows - MINIDUMP_TYPE 枚举值的哪种组合会给我最多 'complete' 小型转储?

我希望我的应用创建一个小型转储来帮助调试未处理的异常。在创建转储之前,我可能不知道我需要什么类型的小型转储,那么MINIDUMP_TYPE的组合是什么?我应该使用标志来提供最完整的转储吗? 最佳答案 在DebugInfo.com链接(感谢David)和MSDN页面的帮助下,我得出了以下列表。并非所有标志都包含在DebugInfo.com链接中。使用这些标志应该创建一个全面但大的迷你转储。包括:MiniDumpWithFullMemory-thecontentsofeveryreadablepageintheprocessaddres

windows - 如何在 Windows 上将 clang 与 mingw-w64 header 一起使用

我有clang3.9来自http://llvm.org/releases/3.9.0/LLVM-3.9.0-win32.execlangversion3.9.0(branches/release_39)Target:i686-pc-windows-msvcThreadmodel:posixInstalledDir:C:\ProgramFiles\LLVM\bin和gcc6.2.0(Mingw-w64)gcc(i686-posix-dwarf-rev1,BuiltbyMinGW-W64project)6.2.0Copyright(C)2016FreeSoftwareFoundation,