草庐IT

CLANG_ARGS

全部标签

c++ - 我相信这是 clang++ 中与访问类的公共(public)成员函数相关的错误

以下doesn'tcompile在clang中:#includevoidf(){std::cout产量:main.cpp:13:16:error:unknowntypename'p';didyoumean'S::p'?s.operatorp()();^S::pmain.cpp:6:19:note:'S::p'declaredheretypedefvoid(*p)();^但它应该,因为表达式s.operatorp()()访问对象S::s的公共(public)成员函数。我错过了什么吗?如果我错了,我将不胜感激标准中的引述来支持答案。 最佳答案

c++ - clang 和 gcc 在使用智能指针时不会警告多态性的非虚基析构函数?

我们知道如果有虚函数那么基类析构函数也应该被标记为虚函数,否则当使用基类指针显式删除时它是未定义的行为如果我们希望删除带有基类指针的派生对象,基类析构函数应该被标记为虚拟的,否则就是未定义的行为。例如,structBase{virtualvoidgreet(){std::cout打电话Base*b=newDerived;b->greet();delete(b);当-Wdelete-non-virtual-dtor时,clang(gccsimilarly)会发出这样的警告:deletecalledon'Base'thathasvirtualfunctionsbutnon-virtuald

c++ - Clang 链接 .so 文件

我一直在努力ld:librarynotfoundfor-lchaiscript_stdlib-5.3.1.soclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)尝试链接到.so文件时。我正在使用这个命令:clang++Main.cpp-ofoo-L./-lchaiscript_stdlib-5.3.1.so我做错了什么?文件libchaiscript_stdlib-5.3.1.so与文件Main.cpp位于同一目录中。我认为-L./会将.so添加到库搜索路径中。 最佳答案

c++ - 如何使用额外的解析器扩展 Clang?

我如何使用额外的解析器扩展Clang,以处理具有特殊文件结尾的文件,即我可以开发一个FrontendAction来表示“嘿!我会处理所有文件结尾的文件'.lorem'并返回抽象语法树(clang::ASTContext?)"?我读过clang::FrontendAction、clang::Parser和clang::driver::Driver但我还没有我无法弄清楚我应该在哪里以及如何扩展Clang,以便能够使用额外的解析器扩展编译器(不是扩展当前的解析器)。 最佳答案 这里有一些提示:在tools/clang/lib/Driver

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完美编译。在这里