问题标签 [compiler-bug]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3022 浏览

c++ - (已知)VC12 中的编译器错误?

该程序在使用 VC12(在 Visual Studio 2013 RTM 中)[1]编译时会导致崩溃(在所有构建配置中),而实际上它不应该:

我知道两个可能相关的无声的错误代码生成错误:

不过,老实说,我认为这些是不同的。有人知道吗

  1. 连接上是否存在主动跟踪的错误
  2. 是否有解决方法(或对导致此错误的情况的明确描述,以便我们可以在代码库中查找/避免它)?

[1]只需使用 C++ 控制台应用程序“向导”创建一个空项目。为简单起见,禁用预编译头并保留所有默认值:http: //i.stack.imgur.com/rrrnV.png

0 投票
1 回答
538 浏览

c++ - Visual Studio 2012 是否正确执行此操作?标准::移动

我最近试图回答的一个问题似乎是 vs2012 的 c++11 支持中的错误。

具体来说,尽管只有 std::move 用于插入映射,但它无法使用不可复制构造的 value_type 编译 std::map。要么选择了错误的插入重载,要么编译器没有考虑替代方案。

基本上,我不知道是否以下代码:

给出输出 01。

0 投票
2 回答
2377 浏览

c++ - C++ 预处理器中的 R 和 L 有什么特别之处?

我通过 Visual Studio 2013 预处理器运行了以下代码。输出让我吃惊。

hello.cpp的内容:

命令:

hello.i 包含:

我在尝试调用 A(L?p:q) 时遇到了这个问题,这导致“Lp:q”对我不利。

这是正确的、定义明确的 C++ 吗?C++ 中的 L 和 R 有什么特别之处?如果文件具有 .c 扩展名,则 L 和 R 被视为与字母表的其余部分相同。这与 C++11 有关吗?它一定是一个新特性,因为旧版本的 MSVS 不会以特殊方式处理 L 和 R。

我能做些什么来阻止 MSVS 2013 以这种特殊方式处理 L 和 R?

0 投票
2 回答
1184 浏览

c++ - 嵌套的 lambda 表达式在 Visual C++ 编译和生成巨大的目标文件时非常慢

我发现嵌套的 lambda 表达式编译和生成巨大的 .obj 文件非常慢。例如,在我的电脑上,以下代码生成一个大小为 4766 KB 的 obj 文件:

并且以下代码(添加了一个嵌套级别)将导致C1128错误。

此外,它们的编译速度非常慢。对此有什么解释吗?我正在使用 Visual C++ 2013。

更新

这似乎是 Visual C++ 中的一个错误,我已将其报告给 Microsoft:https ://connect.microsoft.com/VisualStudio/feedback/details/813755/nested-lambdas-in-visual-c-2013-are-编译和生成巨大对象文件的速度非常慢

0 投票
1 回答
463 浏览

c++ - 空 inizializer_list 上的赋值运算符

你能解释一下 STL 容器如何处理带有空初始化列表的赋值运算符吗?

当我会做这样的事情时:

被调用的函数不是

但:

另一方面,当我对自己的班级做类似的事情时:

该代码无法在 VS2013 上编译,并说:

如果列表不为空,它工作正常,它只是调用带有初始化列表的函数。只有当列表为空时才会出现问题,在向量上它调用右值赋值运算符,在我的类上它给出错误。

在向量和其他容器中如何处理这种情况?

0 投票
1 回答
402 浏览

c++ - g++ (4.7.2) 错误或功能,在编译时初始化静态数组时?

constexpr static int const好的,所以我试图通过在编译时初始化一堆数组来做一些聪明的事情。尽管运行时性能根本不受初始化这些数组的控制,但这似乎是一个有趣的小练习。我写了一个测试设置来看看它是否可能,我最终能够做到这一点:

在这里,Array有一个名为的静态成员array,它包含 10int秒,从 0 开始,其中每个后续元素的值由称为Increment(ie {0, 1, ..., 9}) 的模板元编程函子确定。正如预期的那样,程序打印出 number 3

太棒了,对吧?我现在可以编写仿函数并在编译时初始化数组将各种时髦的模式。下一步:通过制作Test这样的类模板来取消对数组大小 10 的硬编码:

但是,突然之间,它不再与以下消息一起编译:

为什么会这样?一旦我将类变成类模板,这种初始化是否会变得无效,或者我是否偶然发现了 GCC 中未实现/错误的东西?

仅供参考,我可以根据Array要求发布我的其余代码(例如实现)。现在我认为这应该足够了。

编辑该错误可以通过不同的、微不足道的实现来重现,Array以节省一些空间:

0 投票
1 回答
1466 浏览

c++ - 初始化 std::array使用字符串文字的构造函数中的成员。海湾合作委员会错误?

以下示例std::array <char, N>使用字符串文字初始化构造函数中的成员不会在 GCC 4.8 上编译,但使用 Clang 3.4 编译。

在第一印象中,它看起来像一个 GCC 错误。我觉得它应该编译,因为我们可以std::array<char, N>直接用字符串初始化 a 。例如:

我很想看看标准对此有何评论。

0 投票
1 回答
1016 浏览

c++ - 这是 GCC 错误吗?使用联合初始化结构

我可能在 GCC v4.8.2 中发现了一个错误,但我想在提交之前先检查一下,因为这可能是我做错了什么!

以下代码:

clang++ -std=c++11 main.cpp编译得很好。然而g++输出这个:

如果没有人有任何想法,我会将其作为错误提交,尽管根据我的经验,程序员的问题几乎从来都不是编译器错误,而且几乎总是他自己的错!

0 投票
1 回答
130 浏览

c++ - gcc 4.7 有时无法使用指针模板参数

完整(不)工作示例:

编译如下:

我用 ideone 的 gcc 4.8.1 得到了一个正在运行的程序,但是 4.7.3 向我打印了这个:

最后两行重复 3 次。原因是什么,是否有任何解决方法可以在 gcc 4.7.3 上使用我的代码?

0 投票
3 回答
392 浏览

c++ - 海湾合作委员会错误?链接方法,断序列点

我已经调试了一段时间的程序,最终发现错误是由于引用没有像我想象的那样更新。

这是一个显示我遇到的问题的示例:

我原以为这里的 print() 方法会输出 15,但结果却是 5。

编辑: 10 天后,我才意识到用 clang 输出 15!这是 GCC 中的错误吗?