草庐IT

0x800f0922

全部标签

c++ - 这种 C++0x 优化合法吗?

C++0x编译器优化是否合法intfunc(int&&a){a=3;returna;}到intfunc(int&&a){return3;}?(或另一个POD) 最佳答案 不像那样本身,因为函数必须修改变量a使其等效。也就是说,在内联和一些微不足道的优化之后,结果将是相同的:intx=func(5);//pseudo-inlined:int__temp=5;//thetemporarycreatedbybinding5toint&&__temp=3;//a=3;intx=__temp;//returna;//constantpropa

c++ - 在生产中使用 GCC 的 C++0x 模式?

有人在使用GCC4.4.0C++0x生产支持?我正在考虑将它与最新的MinGW一起使用,但我不确定它是否足够成熟。我感兴趣的是:TR1支持汽车初始化列表 最佳答案 恕我直言,TR1支持和auto可以安全使用。在auto的情况下,它是标准中包含的首批功能之一,并且是对语言的相对较小的更改。因此,我可以毫无问题地使用它。对于使用initializerlists,我会比较犹豫。在其他一些论坛(例如comp.lang.c++.moderated)上,有关于它们的行为的问题,并且它们可能会在接近标准发布时发生变化。

c++ - 如何在 C++11 constexpr 中检查 double 的位模式是 0x0?

我想检查给定的double/浮点变量是否具有实际位模式0x0。不要问为什么,它用在Qt中的一个函数中(qIsNull()),我希望它是constexpr。原始代码使用了union:union{doubled;int64_ti;}u;u.d=d;returnu.i==0;这当然不能用作constexpr。下一次尝试使用reinterpret_cast:return*reinterpret_cast(&d)==0;但是虽然它在GCC4.7中作为constexpr工作,但它在Clang3.1中失败了(正确地,指针操作的b/c)。最后的想法是去Alexandrescuesque做这个:temp

c++ - 链接到 opencv 的奇怪链接器错误... "LNK1107: invalid or corrupt file: cannot read at 0x2E8"

这个OpenCV构建在几天前对我有用。我正在尝试运行随OpenCV示例给出的示例grabcut.cpp文件,因此我设置了一个快速项目并引入了cpp文件。然后,我设置了所有标准配置并在构建时出现此错误。errorLNK1107:invalidorcorruptfile:cannotreadat0x2E8opencv_calib3d231.dll这是什么意思? 最佳答案 如果我不得不猜测(部分基于thedocumentationofthaterror),我会说您正在尝试直接链接到DLL。您可能想要链接到其相应的.lib文件。

微软商店“提示无法加载页面。请稍后重试“--错误代码0x80131500的解决方法合集(总有一条适合你)

微软商店错误代码0x80131500解决思路:方法一:可能是由于http协议设置的问题导致的。您可以尝试以下方法来解决这个问题:1.用"win+R"打开运行,输入inetcpl.cpl 打开Internet属性(或从IE浏览器设置打开)。2.点击高级选项,找到并勾选TLS1.2,取消勾选TLS1.0。3.点击确定,现在应用商店应该可以打开了。方法二:重置WIN10网络设置。具体步骤如下:按“Win+X”,启动“WindowsPowerShell(管理员)”,输入以下命令:netshwinsockreset。按下回车键,执行完成后,提示我们重启,按提示重启一下win10系统即可!方法三:控制面板

c++ - C++0x 中 char 和 Unicode 的符号

从C++0x工作草案开始,用于处理Unicode的新字符类型(char16_t和char32_t)将是无符号的(uint_least16_tuint_least32_t将是基础类型)。但据我所知(也许不是很远)没有定义类型char8_t(基于uint_least8_t)。为什么?当您看到为UTF-8字符串文字引入了新的u8编码前缀时,它更加令人困惑......基于老friend(有符号/无符号)char.为什么?更新:有人提议添加一个新类型:char8_tchar8_t:UTF-8字符和字符串的类型(修订版1)http://www.open-std.org/jtc1/sc22/wg21

C++0x 可变参数包 : Syntax

以下代码片段在gcc4.6.1下无法编译:templatevoiddo_stuff(TS...ts){autof=[](TS...things){};}它会抛出一个错误,说明packthings没有展开。但是,以下代码确实可以编译:templatevoiddo_stuff(TS...ts){autof=[](TS...things...){};}注意参数列表中的内容之后的额外解包运算符。我从未见过在声明期间必须扩展可变参数包的情况。所以我想问你们好心人的问题是:这是合法的C++0x语法(编译的片段)还是GCC在处理可变类型时的一个怪癖? 最佳答案

C++0x 静态初始化和线程安全

我知道在C++03标准中,函数范围的静态初始化不保证是线程安全的:voidmoo(){staticstd::stringcat("argent");//notthreadsafe...}随着C++0x标准最终提供标准线程支持,函数范围的静态初始化是否需要线程安全? 最佳答案 似乎初始化是线程安全的,因为在进入函数时动态初始化对象的情况下,它保证在临界区执行:§6.7stmt.decl4。...这样的对象在控件第一次通过其声明时被初始化...如果控件在初始化对象时并发进入声明,则并发执行应等待初始化完成.../p>有一个潜在的边缘情况

c++ - 如何处理 C++0x STL 中丢失的 'emplace_range'?

我有两个容器,假设它们是这样定义的:std::vector>a;std::vector>b;假设a和b都被填充了。我想使用move语义将整个容器a插入到b中的特定位置,以便unique_ptrmove到b。假设i是指向b中某处的有效迭代器。以下不起作用:b.insert(i,a.begin(),a.end());//error:triestocopy,notmove,unique_ptrs是否有另一种STL算法可以实现这种“move插入范围”?我想我需要一种emplace_range,但VS2010的STL中没有。我不想编写一个一个一个插入的循环,因为每次插入时都会向上movevect

c++ - 如何在 c++(0x) 中使用多个返回值进行初始化

tuple在boost和TR1/c++0x中提供了一种方便的(对于函数的编写者)从函数返回两个值的方法——但是它似乎损害了调用者语言的一个主要特性:简单使用的能力初始化变量的函数:Thappy();constautomeaningful_name(happy());//RVOmeansnoexcesscopies但对于:tuplesad();我们要么放弃为我们的返回值选择一个有意义的名称的能力,并使用get()无处不在:constautotwo_unrelated_things(sad());或者做一个临时的:constautounwanted_named_temporary(sad(