草庐IT

c++ - 注入(inject)的类名编译器差异

考虑这段代码:structfoo{};intmain(){foo::fooa;}我希望这是格式正确的,通过[class]/2(N4140,强调我的)中的规则声明foo类型的变量:Aclass-nameisinsertedintothescopeinwhichitisdeclaredimmediatelyaftertheclass-nameisseen.Theclass-nameisalsoinsertedintothescopeoftheclassitself;thisisknownastheinjected-class-name.Forpurposesofaccesschecking

c++ - 注入(inject)的类名编译器差异

考虑这段代码:structfoo{};intmain(){foo::fooa;}我希望这是格式正确的,通过[class]/2(N4140,强调我的)中的规则声明foo类型的变量:Aclass-nameisinsertedintothescopeinwhichitisdeclaredimmediatelyaftertheclass-nameisseen.Theclass-nameisalsoinsertedintothescopeoftheclassitself;thisisknownastheinjected-class-name.Forpurposesofaccesschecking

c++ - C++ 标准中短语 "constructors do not have names"的含义

在尝试理解C++标准中的“构造函数没有名称”这一短语时,我似乎在clang中发现了一个错误。有人可以证实这一点吗?VS2015andgcc拒绝此代码,我认为他们它是是正确的。至少,这是我从N4140中的§12.1[class.ctor]/2得到的印象:#includeclassA{public:A(){std::cout§12.1[class.ctor]/2在N4140中:Aconstructorisusedtoinitializeobjectsofitsclasstype.Becauseconstructorsdonothavenames,theyareneverfounddurin

c++ - C++ 标准中短语 "constructors do not have names"的含义

在尝试理解C++标准中的“构造函数没有名称”这一短语时,我似乎在clang中发现了一个错误。有人可以证实这一点吗?VS2015andgcc拒绝此代码,我认为他们它是是正确的。至少,这是我从N4140中的§12.1[class.ctor]/2得到的印象:#includeclassA{public:A(){std::cout§12.1[class.ctor]/2在N4140中:Aconstructorisusedtoinitializeobjectsofitsclasstype.Becauseconstructorsdonothavenames,theyareneverfounddurin

c++ - 如何将 makefile 转换为 JSON 编译数据库?

假设我们有适用于gcc和clang的项目的make文件(不是cmake/premake/ninja等)。我们希望从它们中生成JSON编译数据库,以将其提供给clang-modernize工具。怎么做这样的事情?(clang基础架构中是否有任何解析器或某些脚本,例如makeCC='cc_args.pygcc'CXX='cc_args.pyg++'或其他工具)? 最佳答案 我没有个人经验,但是Bear似乎针对您的场景。(它是从clang-modernize网站链接的。) 关于c++-如何将m

c++ - 如何将 makefile 转换为 JSON 编译数据库?

假设我们有适用于gcc和clang的项目的make文件(不是cmake/premake/ninja等)。我们希望从它们中生成JSON编译数据库,以将其提供给clang-modernize工具。怎么做这样的事情?(clang基础架构中是否有任何解析器或某些脚本,例如makeCC='cc_args.pygcc'CXX='cc_args.pyg++'或其他工具)? 最佳答案 我没有个人经验,但是Bear似乎针对您的场景。(它是从clang-modernize网站链接的。) 关于c++-如何将m

c++ - 如何在 Mac 上启用 C++17?

我可以在Linux上更新gcc以获取-std=c++17,但在Mac上不能这样做。是否有我可以更新到的Clang版本或其他替代方法来在我的Mac上获取C++17?请帮忙。谢谢。 最佳答案 在我的10.11ElCapitan、Xcode7.3.1上,clang已更新为:AppleLLVMversion7.3.0(clang-703.0.31)几乎等同于llvm3.8版。clang++没有-std=c++17选项,但是-std=c++1z,目前运行良好,虽然只有支持C++1z的一些特性。对于gcc,您可以通过以下方式安装一个非常新的:b

c++ - 如何在 Mac 上启用 C++17?

我可以在Linux上更新gcc以获取-std=c++17,但在Mac上不能这样做。是否有我可以更新到的Clang版本或其他替代方法来在我的Mac上获取C++17?请帮忙。谢谢。 最佳答案 在我的10.11ElCapitan、Xcode7.3.1上,clang已更新为:AppleLLVMversion7.3.0(clang-703.0.31)几乎等同于llvm3.8版。clang++没有-std=c++17选项,但是-std=c++1z,目前运行良好,虽然只有支持C++1z的一些特性。对于gcc,您可以通过以下方式安装一个非常新的:b

c++ - 如何处理clang中的全局构造函数警告?

Clang警告(在使用-Weverything或Wglobal-constructors时)关于静态对象的构造函数。warning:declarationrequiresaglobalconstructor[-Wglobal-constructors]AA::my_A;//triggerssaidwarning^~~~为什么这是相关的,应该如何处理这个警告?简单示例代码:classA{//...staticAmy_A;A();};AA::my_A;//triggerssaidwarning 最佳答案 这是一个触发相同警告的简单案例:

c++ - 如何处理clang中的全局构造函数警告?

Clang警告(在使用-Weverything或Wglobal-constructors时)关于静态对象的构造函数。warning:declarationrequiresaglobalconstructor[-Wglobal-constructors]AA::my_A;//triggerssaidwarning^~~~为什么这是相关的,应该如何处理这个警告?简单示例代码:classA{//...staticAmy_A;A();};AA::my_A;//triggerssaidwarning 最佳答案 这是一个触发相同警告的简单案例: