草庐IT

CLANG_ARGS

全部标签

c++ - 在 clang++ 中按值怪异传递抽象对象

为什么clang++3.6编译了下面的代码(g++没有)?classAbc{public:virtualvoidfoo()const=0;virtual~Abc(){}};//iscorrectlyrejected//voidbar(Abco)//{//}classB{voidbar(Abco)//shouldalsoberejected{}};intmain(){}我使用的是clang3.6和gcc4.9.2。为什么自由函数(正确地)被拒绝而成员函数却没有?有什么提示吗?clang中的错误?如果我将上面的修改为:classAbc{public:virtualvoidfoo()cons

c++ - Clang 不能使用花括号初始化来进行用户定义的转换

代码如下。structA{A(){}};structB{B(){}explicitoperatorA(){returnA{};}};structC{Aa;C(Bb):a{b}{}};我有一个structA,它不是聚合可构造的(因为它定义了一个构造函数)。structB也是如此。但它也有一个明确的用户定义的转换运算符到structA。现在structC的构造函数接受一个structB,并使用它来构造structA。关于cppreference,转换运算符可以直接参与初始化,我相信structC的成员初始化就是这样。它通过GCC5.2(C++11)。但是它在Clang3.6上失败了。我尝试

c++ - 如何让 clang 搜索 gcc 的头文件?

我想用clang(3.3)替换gcc来构建我的C++11代码,所以我应该使用clang的选项-stdlib=libstdc++(让它看到STL头文件)。该选项有效:clang看到像string这样的header,但找不到c++11header(type_traits),因为clang在4.2目录中搜索:clang++-stdlib=libstdc++-E-xc++--v如何让它查看GCCheader的never版本?据我所知,C++11的clang只支持libc++(不是libstdc++),所以安装libc++的唯一方法是什么? 最佳答案

c++ - Clangs C++ 模块 TS 支持 : How to tell clang++ where to find the module file?

在他的talk在CppCon上,RichardSmith提到尽管ModuleTS支持目前正在进行中,但它已经可以使用了。所以我从svn构建了clang4.0,并在一个非常简单的示例上进行了尝试。在我的myclass.cppm文件中,我为int定义了一个简单的包装器modulemyclass;exportclassMyClass{public:MyClass(inti):_i{i}{}intget(){return_i;}private:int_i;};和我的main.cpp只是创建该类的一个实例,并将其保存的int输出到std::cout。#include#includeimportm

c++ - 编译时抽象类处理中的 clang vs gcc

其中之一issuesnlohmann/json开源库引起了我的注意。我有一个案例的最小复制品doesnotcompile在少数版本的桌面gcc(4.8、4.9,也尝试过5+)下,但使用macclang和Androidndk的gcc4.9编译得很好#includestructbase{virtualvoidfoo()=0;};intmain(){(void)numeric_limits::is_signed;}GCC正在尝试实例化std::numeric_limits使用基类而不是派生类:/usr/include/c++/4.8/limits:Ininstantiationof'stru

c++ - 如何防止 clang-format 在新行中添加单个分号?

我在C++中有这行代码while(fread(pixel_array++,sizeof(byte),3,fp));但是当我使用clang-format时,它会拆分分号并将其添加到新行中while(fread(pixel_array++,sizeof(byte),3,fp));我不喜欢这种风格,我更喜欢保持原来的风格。我应该如何修改我的clang-format配置?谢谢。 最佳答案 clang-format5.0目前无法识别这种类型的循环。不幸的是,从clang-format版本5开始,您将无法获得满足您需要的设置。查找ClangFo

c++ - ADL 在 constexpr 函数中不起作用(仅限 clang)

以下代码可以使用MSVC和gcc编译,但不能使用clang。为什么会这样?如果CallFoo()是constexpr,ADL似乎无法工作。查看评论。templateconstexprvoidCallFoo()//Removeconstexprtofixclangcompilationerror.{Foo(T());}classApple{};intmain(){CallFoo();}constexprvoidFoo(Apple){}Clang错误消息(seeongodbolt.org)::4:5:error:useofundeclaredidentifier'Foo'Foo(T());

c++ - Clang 是否比跨平台的 GCC 更具确定性?

我正在考虑用C++编写多用户RTS游戏(部分)的可行性。我很快发现,一个硬性要求是游戏模拟必须完全确定服务器和所有客户端的最后一点,以便能够将网络通信限制为用户输入,而不是游戏状态本身.由于每个人都有不同的计算机,这似乎是一个难题。那么,是否有一些“神奇”的方法可以让C++编译器创建一个在Linux(服务器)、Windows和Mac上完全确定的可执行文件?我认为两个主要的OSSC++编译器是GCC和Clang,所以我想知道在这方面是否一个比另一个表现更好。我也会对任何可用于验证C++确定性的测试套件感兴趣。[编辑]所谓确定性,我的意思是编译后的程序,给定相同的初始状态,并以相同的顺序输

c++ - 为什么 clang 让我在 C++03 模式下通过非常量引用获取临时值?

Inspiredbymyobservationinapreviousquestion,我决定做一个小测试:#include#includeintmain(){charc='A';std::stringstreamss("B");//Iknowthisisbadmojo;that'swhyI'mtestingitss>>char(c);std::cout我的编译器版本:AppleLLVMversion5.1(clang-503.0.40)(basedonLLVM3.4svn)Target:x86_64-apple-darwin13.3.0Threadmodel:posix用C++03模式

c++ - gcc 中的错误,或 clang/MSVC 中的扩展

以下代码片段可以在clang和MSVS中编译,但不能在gcc中编译。templateclassclone_ptr;templateclone_ptrmake_cloned(Args...args);//note:everythingnotneededforexamplecutout,so//thisclassisneithercompletenorcorrecttemplateclassclone_ptr{public:clone_ptr():ptr(nullptr){}operatorbool(){returnptr!=nullptr;}T*operator->(){returnpt