C++14似乎即将到来,编译器已经在尝试实现这个新版本的核心特性。我在看GCCsupportforthesecorefeatures并注意到有关二进制文字部分的一些信息:GCC实现了它们,但似乎在GNU二进制文字和C++14二进制文字之间有所不同。以下是两者各自的引用:GNUbinaryliteralsC++1ybinaryliterals我试图找到它们两者之间的一些差异,因为GCC似乎有所作为,但找不到任何东西。你们有谁知道更多关于可能的不兼容性的信息吗? 最佳答案 来自commitdiff它在gcc4.9中引入了支持,唯一的区别
我在ideone上发布了以下代码和Coliru:#include#include#includeintmain(){std::stringexample{""};std::regexre{"]+)>"};std::regex_token_iteratorit{example.begin(),example.end(),re,1};decltype(it)end{};while(it!=end)std::cout两个站点都使用GCC4.9.2。我不知道ideone使用什么编译参数,但在Coliru中并没有什么不寻常的地方。Coliru没有给我match1结果:科利鲁#g++-v2>&1|
我最近将GCC升级到8.2,我的大部分SFINAE表达式都停止工作了。以下内容有所简化,但演示了问题:#include#includeclassClass{public:template::type>::value,int>::type...>voidtest(){std::cout::type>::value,int>::type...>voidtest(){std::cout();c.test();return0;}C++(gcc)–TryItOnlineC++(clang)–TryItOnline旧版本的GCC(不幸的是我不记得我之前安装的确切版本)以及Clang编译上面的代码就
专门针对C和C++,默认使用多少遍?这个数字会根据所使用的优化级别而变化吗?(应该)可以直接改吗?我在http://gcc.gnu.org/中搜索此信息,但使用site:http://gcc.gnu.org/进行谷歌搜索并没有产生任何结果。任何指向有关此的任何文档的指针也会有所帮助。通过我的意思是仅对源代码的原始表示进行传递,而不是Wikipedia建议的多次传递定义. 最佳答案 PassesandFilesoftheCompiler可能是最接近您正在寻找的东西。 关于c++-gcc使用
考虑这个例子,它将一个变量声明为constexpr,通过在lambda中复制来捕获它,并声明另一个constexpr变量,该变量是constexpr函数从原始变量中解包非类型模板参数的结果。#includetemplateconstexprautounwrap(std::integral_constant){returnI;}intmain(){constexprautoi=std::integral_constant{};constexprautol=[i](){constexprintx=unwrap(i);};}Clang(主干)接受此代码。(wandbox)GCC(trunk)
这不是关于gcc支持哪些c++11功能的问题(我相信从4.8开始对c++11的支持非常完整),但如果有任何已知问题在生产代码中使用它们。我问的原因是我看过manualforgcc5.2并在“GCC支持的语言标准”部分中写道:[...]mostofwhichhavebeenimplementedinanexperimentalC++11modeinGCC.experimental这个词让我有点担心,但另一方面,甚至没有提到c++14,尽管我相信GCC也支持所有这些特性。那么这只是文档中的一个疏忽,还是对在将使用gcc5.2(4.8)编译的生产代码中使用c++11功能真的存在任何有效的担忧
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html我在GCC5上使用std::string时遇到了崩溃/valgrind问题。上面的链接暗示从GCC5.x开始的ABI发生了变化。libstd++的新默认ABI是C++11/14...,它与旧ABI不兼容。有一种方法可以使用定义来选择较旧的ABI。我正在尝试了解ABI之间的区别,但尚未找到详细信息。我想帮助理解:需要修复std::string的哪些问题才能与新的ABI兼容?它们是否与写时复制相关?这些更改会破坏旧ABI的功能吗?让_GLIBCXX_USE_
使用IBM的XL编译器系列,可以提供两个选项(-qreport和-qlist)来为每个源文件生成报告,其中包括关于哪些优化的信息应用了,或者代码的哪些部分无法优化(以及为什么)。是否有可能获得关于GNU的g++的类似报告-如果可以,该怎么做? 最佳答案 查看-fdump-tree-[switch]标志。您可以使用-fdump-tree-all来获取大量信息。同样在trunkgcc-fopt-info-[options]将让您访问更高级别的优化信息,例如当应用特定优化时,错过等,例如-fopt-info-inline-optimize
根据c++标准,以下程序是良构的还是良构的?namespaceX{inti;}namespaceY{usingX::i;}intmain(){usingX::i;usingY::i;}我使用不同的编译器得到不同的结果:MSVS:编译(http://webcompiler.cloudapp.net/)Clang:编译(http://melpon.org/wandbox/permlink/KloDufJ5h1DalK4v)GCC:编译错误(http://melpon.org/wandbox/permlink/IKuuQGE1THofuUTr)我不想修复这个程序以使其在GCC上编译。我只想知
这是一个非常基本的问题,但我不明白为什么下面的代码不能在GCC4.6.1上编译。它确实在带有SP1的VS2008上编译:#includeclassMyClass{public:conststaticintMinValue=-1000;conststaticintMaxValue=1000;};voidprintValue(inti){std::coutGCC说:david@David-Laptop:~/temp$g++test.cpp/tmp/ccN2b95G.o:Infunction`main':test.cpp:(.text+0x54):undefinedreferenceto`M