草庐IT

iphoneos-clang

全部标签

c++ - 默认情况下,clang 中是否有一组已知的 `c++11` 功能不需要 `-std=c++11` ?

clang(3.4)似乎自动接受某些c++11(例如auto、for(:))而没有特殊标志(尽管产生警告),但不接受其他部分(例如lambdas).例如下面编译clang++c++11.success.cpp:#includeintmain(intargCount,char**argVec){std::vectorvec;for(auto&item:vec){++item;}return0;}但这失败了clang++c++11.failure.cpp:#includeintmain(intargCount,char**argVec){std::vectorvec;autolambda=

c++ - 默认情况下,clang 中是否有一组已知的 `c++11` 功能不需要 `-std=c++11` ?

clang(3.4)似乎自动接受某些c++11(例如auto、for(:))而没有特殊标志(尽管产生警告),但不接受其他部分(例如lambdas).例如下面编译clang++c++11.success.cpp:#includeintmain(intargCount,char**argVec){std::vectorvec;for(auto&item:vec){++item;}return0;}但这失败了clang++c++11.failure.cpp:#includeintmain(intargCount,char**argVec){std::vectorvec;autolambda=

c++ - gcc和clang的重载解析差异涉及move构造函数和 'Derived(Base&&)'构造函数

GCC(用4.9测试)接受以下测试用例:structBase{};structDerived:Base{Derived();explicitDerived(constDerived&);explicitDerived(Derived&&);explicitDerived(constBase&);Derived(Base&&);};Derivedfoo(){Derivedresult;returnresult;}intmain(){Derivedresult=foo();}Clang(用3.5测试)拒绝它并显示以下错误消息:test.cpp:13:10:error:nomatchingc

c++ - gcc和clang的重载解析差异涉及move构造函数和 'Derived(Base&&)'构造函数

GCC(用4.9测试)接受以下测试用例:structBase{};structDerived:Base{Derived();explicitDerived(constDerived&);explicitDerived(Derived&&);explicitDerived(constBase&);Derived(Base&&);};Derivedfoo(){Derivedresult;returnresult;}intmain(){Derivedresult=foo();}Clang(用3.5测试)拒绝它并显示以下错误消息:test.cpp:13:10:error:nomatchingc

c++ - constexpr 函数中的复合赋值 : gcc vs. clang

templateconstexprintf(Aa,Bb){a/=b;returna;}constexprintx=f(2,2);//a,b:intconstexprinty=f(2.,2.);//a,b:doubleconstexprintz=f(2,2.);//a:int,b:double//代码未在clang中编译,它会产生以下诊断信息:error:constexprvariable'z'mustbeinitializedbyaconstantexpressionMSVC崩溃(根据godbolt)并且gcc工作正常。如果a/=b被简单地替换为a=a/b那么每个人都接受它。为什么?谁

c++ - constexpr 函数中的复合赋值 : gcc vs. clang

templateconstexprintf(Aa,Bb){a/=b;returna;}constexprintx=f(2,2);//a,b:intconstexprinty=f(2.,2.);//a,b:doubleconstexprintz=f(2,2.);//a:int,b:double//代码未在clang中编译,它会产生以下诊断信息:error:constexprvariable'z'mustbeinitializedbyaconstantexpressionMSVC崩溃(根据godbolt)并且gcc工作正常。如果a/=b被简单地替换为a=a/b那么每个人都接受它。为什么?谁

c++ - 如何在 CentOS 7 上通过 clang 构建 libcxx 和 libcxxabi

我想在CentOS7上使用带有clang/clang++的C++11或C++14。如何构建这个构建环境? 最佳答案 本文讲授如何在CentOS7上构建C++11构建环境:RHEL的EPELrepo提供Clang包,但没有C++库包。所以,这些部分手工制作有点麻烦。为Clang定制的C++库是libc++(libcxx)[1]。然后,libcxx还需要一个ABI库,libc++abi(libcxxabi)[2]。不幸的是,这两个库存在循环依赖问题。为了打破循环依赖问题,可以不链接libc++abi构建libc++。然后,有了这个lib

c++ - 如何在 CentOS 7 上通过 clang 构建 libcxx 和 libcxxabi

我想在CentOS7上使用带有clang/clang++的C++11或C++14。如何构建这个构建环境? 最佳答案 本文讲授如何在CentOS7上构建C++11构建环境:RHEL的EPELrepo提供Clang包,但没有C++库包。所以,这些部分手工制作有点麻烦。为Clang定制的C++库是libc++(libcxx)[1]。然后,libcxx还需要一个ABI库,libc++abi(libcxxabi)[2]。不幸的是,这两个库存在循环依赖问题。为了打破循环依赖问题,可以不链接libc++abi构建libc++。然后,有了这个lib

c++ - 禁用clang-tidy检查的内联方式

我正在尝试为一个项目设置clang-tidy。我希望能够获得干净的输出,并鼓励在可能的情况下使用-fix模式。但是,在个别情况下需要异常(exception)。尽可能多地使用#pragmaclangdiagnosticpush#pragmaclangdiagnosticignored"-Wreserved-id-macro"//Codethatisbeingspeciallyexempted#pragmaclangdiagnosticpop对于想要在本地禁用编译器警告的等效情况,是否可以从clang-tidy执行类似的操作?我试过了#pragmaclangdiagnosticpush#

c++ - 禁用clang-tidy检查的内联方式

我正在尝试为一个项目设置clang-tidy。我希望能够获得干净的输出,并鼓励在可能的情况下使用-fix模式。但是,在个别情况下需要异常(exception)。尽可能多地使用#pragmaclangdiagnosticpush#pragmaclangdiagnosticignored"-Wreserved-id-macro"//Codethatisbeingspeciallyexempted#pragmaclangdiagnosticpop对于想要在本地禁用编译器警告的等效情况,是否可以从clang-tidy执行类似的操作?我试过了#pragmaclangdiagnosticpush#