问题标签 [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 回答
307 浏览

c++ - (Default) construct an object for every variadic type

Consider this code snippet:

What I want to do here is to default construct two std::string objects inside the Bar method and pass them to Foo. However my vain attempts (one of them being in the snippet) wont compile so I am wondering whether this is even possible.

I compiled with VC 2013, which throws compiler errors at me. As stated in the comments, other compilers can handle it. Can anyone tell whether the above snippet is standard conform?

0 投票
1 回答
639 浏览

gcc - GCC 4.8.1 的解决方法:抱歉,未实现:修改 argument_pack_select

考虑以下代码:

在 g++ 4.8.1 下,它产生:

有没有办法避免这个问题?是否已在 g++ 4.8.2 或 4.9.0 中报告和更正?

编辑:我刚刚在这里报告了这个错误:http: //gcc.gnu.org/bugzilla/show_bug.cgi?id= 60130

0 投票
1 回答
167 浏览

c++ - 使用可变参数模板时出现 G++ 错误

在 G++ 中,我得到

有没有其他人遇到过这个?这是编译器的实际错误还是我的代码中的错误?

我在跑

带有标志 -std=gnu++0x -O2 -g

0 投票
0 回答
486 浏览

c++ - VS 2013.1 不会扩展可变参数模板

这段代码编译得很好,g++但拒绝这样做,msvc并出现以下错误:



错误的完整版本:

编译版本就堆叠歪了

0 投票
2 回答
5344 浏览

c++ - C++:奇怪的“是私有的”错误

我从 g++ 中得到一个非常不寻常的错误,声称类型别名是私有的。经过数小时减少代码后,我得出了以下最小测试用例:

g++ 4.8.2 的错误是:

Clang 3.4 接受相同的代码。这是怎么回事,这是一个 g++ 错误吗?

执行以下任何操作都会阻止错误发生:

  • 变成Test一个类,而不是一个模板类。
  • 删除任何函数中的任何语句。
  • 更改TheCatDog::Dog::bark();CatDog::Dog::bark();.
  • 删除CrazyHouse类并将其内容合并到Test.
  • 删除CatDog类,将其内容合并到Test并将TheCatDog别名更改为指向Test.
0 投票
0 回答
101 浏览

c++ - VS2013 上宏中的原始 C++11 字符串

似乎 Visual Studio 2013 编译器中存在一个关于 C++11 原始字符串支持的错误。

C++11 中的新原始字符串看起来像R"(\s(\d+))"; 它们对于正则表达式和多行字符串非常方便。Visual Studio 2013(和 VS 2012 November CTP)支持它们,但如果你将原始字符串放在宏中(即使是简单的),可能会发生不好的事情。

这个简单的代码编译但断言失败:

笔记:

  • 宏尽可能简单。
  • 如果字符串内的右括号被删除,一切正常。
  • 如果字符串内的反斜杠或's'字母被删除,则代码无法编译!

这真的是编译器错误吗?如果是,这是一个已知的错误吗?有解决方法吗?

0 投票
3 回答
1450 浏览

memory-leaks - 带有“指针”参数的方法导致的 Free Pascal 中的内存泄漏

在用 ToBytes 方法(见下文)将 AnsiString 的硬类型转换替换为 TBytes(字符串数组)后,Delphi 报告没有内存泄漏 - 但是,Free Pascal 2.6.2 显示泄漏,以防 TBytes 值传递给具有类型的参数Pointer

以下代码泄漏内存:

内存泄漏报告:

如果我将 Send 方法更改为采用 TBytes 类型的参数,内存泄漏就会消失。

0 投票
3 回答
578 浏览

c++ - C++ 预处理器标准行为

我正在研究预处理器的确切行为的 C++ 标准(我需要实现某种 C++ 预处理器)。据我了解,我在下面编写的示例(以帮助我理解)应该是有效的:

我希望第一个函数(如宏调用)dds(eoe)被替换为f(eoe,(注意替换字符串中的逗号),然后将其视为f(eoe,su)重新扫描输入的时间。

但是 VC++2010 的测试给了我这个(我告诉 VC++ 输出预处理文件):

这是违反直觉的,显然是不正确的。是 VC++2010 的 bug 还是我对 C++ 标准的误解?特别是,像我一样在替换字符串的末尾加上逗号是否不正确?我对 C++ 标准语法的理解是,任何preprocessing-token' 都是允许的。

编辑:

我没有 GCC 或其他版本的 VC++。有人可以帮我验证这些编译器。

0 投票
2 回答
435 浏览

c++ - std::initializer_list 中的 std::shared_ptr 似乎过早地被破坏

编辑:这确实是由 Visual Studio 中的错误引起的 - 它已经被修复。将Update 2应用到 Visual Studio此处提供候选版本)后,该问题无法重现。我道歉; 我以为我的补丁是最新的。


当我在 Visual Studio 2013 中运行以下代码时,我终生无法弄清楚为什么会出现段错误:

我期待着initializer_list拥有创建shared_ptr的 s 的所有权,将它们保持在范围内直到main.

奇怪的是,如果我尝试访问列表中的第二项,我会得到预期的行为。例如:

考虑到这些事情,我猜这可能是编译器中的一个错误——但我想确保我没有忽略一些解释为什么会出现这种行为(例如,可能是在initializer_lists 中如何处理右值)。

这种行为在其他编译器中是否可以重现,或者有人可以解释可能发生的事情吗?

0 投票
1 回答
1179 浏览

c++ - 联合中的大括号或相等初始化器

相关:如何在 Union 中初始化非 POD 成员

标准说

最多一个联合的非静态数据成员可以有一个大括号或等号初始化器。

打印4196960:0而不是预期的1:2.

我认为这是一个编译器错误。是这样吗?