草庐IT

c++ - 在不久的将来是否有任何主流编译器可能支持 C++0x 无限制 union ?

我一直在寻找,但似乎编译器开发人员对支持这些的兴趣为零。对我来说,这似乎很奇怪——基本上,当前的C++对union有一些限制,这些限制总是令人恼火而且从不合适。您可能认为基本上删除一些错误检查是勾选额外的c++0x支持框的一种相对简单的方法,但AFAICT还没有编译器开发人员这样做。我之所以感兴趣是因为它为数据结构编码中反复出现的问题提供了一个简单的解决方案——如何为一些未知(模板参数)类型的实例保留内存,最好在情况下,但不调用恰好在该类型上定义的任何构造函数。真正重要的一点是必须遵守对齐规则。不受限制的union非常适合此-它为您提供了一个没有构造函数或析构函数的类型,但具有允许任何

c++ - 0x751fc52f异常,代码: 0x71a: , flags=0x1(无法继续执行)(第一次机会)

当我调试我的Qt应用程序(使用QtCreator3.6.0)时,我在主题行中收到错误我在构建和运行时没有得到它,只有在调试时才得到。似乎正因为如此,我的调试器也表现得很古怪,有时它不进入代码,有时它进入代码,特别是在重新启动QtCreator时。更重要的是,不知道这个异常发生在哪里。我怎样才能得到这个异常,并可能让调试器在它发生的地方停止? 最佳答案 Howcanigettothisexceptionandpossiblyhavethedebuggerstopwhereitisoccurring?QtCreator可以为此设置特定的

c++ - C++0x 的 REPL/LINQpad/F# 交互式替代方案?

我喜欢在为C#和F#开发代码时使用LINQpad和FSI。对于haskell,我使用了拥抱。当然,脚本语言几乎总是带有REPL。几乎每个现代浏览器都附带了一个相当漂亮的javascriptrepl/ide。C++0x有类似的东西吗?简洁的功能是:可以包含/链接到预先存在的代码编译周期短而快-花一秒钟就可以,花几分钟就不行。autocomplete/intellisense或类似的东西会很好,或者至少是一个像样的google-this-function-for-mekeyshortcut至少部分支持C++0x。我主要使用Windows,但如果在Linux上有一个很棒的工具不需要1337小

c++ - 如何让 Coverity 静态分析兼容 C++0x 标准?

我使用的是WindRiverCompiler4(gcc(C)和g++(C++)),它可以毫无问题地编译我的所有项目。现在我必须使用Coverity静态分析来检查我的代码。我已经配置了特定的编译器。对于C代码(gcc)没有问题,我可以运行分析,但是对于C++代码(g++),我遇到了很多错误:.../c++config.h",line214:error#40:expectedanidentifierinlinenamespace__gnu_cxx_ldbl128{}^.../c++config.h",line214:error#326:inlinespecifierallowedonfun

c++ - 如何在 C++0x 中缓存 lambda?

在C#中大量使用lambda之后,我尝试在C++中使用它们。我目前有一个boost元组(这是真正简化的版本)。typedefshared_ptr(*StringFooCreator)(std::string,int,bool)typedeftupleFooTuple然后我将全局命名空间中的一个函数加载到我的FooTuple中。理想情况下,我想用lambda替换它。tuplearray[i]=FooTuple([](stringbar,intrc,booleom)->{returnshared_ptr(newFoo(bar,rc,eom));});我不知道lambda元组的函数签名应该是

c++ - 在 C++0x 中忽略收缩转换的后果是什么

自从在g++中启用C++0x标准后,我开始看到“缩小转换”错误,尤其是在从“int”转换为“short”时,尽管我知道该错误涵盖范围更广conversions.谁能阐明引入这种额外安全级别的合理性?禁用此错误的可能后果是什么?(除了潜在的精度损失)。谢谢。 最佳答案 来自赋值和复合赋值运算符[expr.ass]Themeaningofx={v},whereTisthescalartypeoftheexpressionx,isthatofx=T(v)exceptthatnonarrowingconversion(8.5.4)isall

c++ - 由于右值引用,C++0x 中的 std::swap 是原子的吗?

因为我们在C++0x中有右值引用,所以在我看来,应该可以将std::swap实现为CAS的原子操作。新标准是否属于这种情况?如果不是,原因是什么? 最佳答案 它不是原子的。原子操作并不便宜,99%的时间你不需要原子性。有(IIRC)一些其他方法来获得原子操作,但std::swap()不是其中之一。 关于c++-由于右值引用,C++0x中的std::swap是原子的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - 有没有一种简单的方法可以在 C++0x 中实现 AutoResetEvent?

我知道我之前问过这个问题:WhatistheC++equivalentforAutoResetEventunderLinux?但是,我了解到在C++0x中,线程库变得更加简单,所以我想再次提出这个问题,有没有一种简单的方法可以在C++0x中实现AutoResetEvent? 最佳答案 这是对acceptedanswertoyourfirstquestion的翻译使用C++11工具:#include#include#include#includeclassAutoResetEvent{public:explicitAutoResetE

c++ - 哪些编译器对 C++0x 的当前状态有最先进的支持?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:CompilersupportforupcomingC++0x希望将其用于纯粹的实验目的。有没有完全支持的?似乎VC++和GCC有很好的支持,但仍然不完整(可以理解)。

c++ - 传递重物 C++0x

我有一个函数可以生成一种昂贵的对象(包含vector和非固定大小的map),所以我真的想避免调用复制c'tors。到目前为止,我只是从方法中返回了一个std::shared_ptr并使用了它,但我认为它很丑陋并且需要类型定义才能真正使用。我知道有两件事可能对我有帮助。一是复制省略,二是move语义。我的问题是我不知道如何正确使用它们。我的研究告诉我,复制省略完全由编译器完成,而不是st'd的一部分。我真的不想完全依赖这个。那么我如何确保调用move赋值并将其放置到位以防止编译器执行复制省略。ResultSet&&generateResults(){//ResultSeta();:SRe