问题标签 [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 投票
0 回答
514 浏览

c++ - 可能的 Visual Studio c++ 编译器错误?模板模板非类型参数的问题

新问题

编辑

这个错误似乎与这个相同

MSVC 拒绝以下代码:

错误 C3201:类模板“x”的模板参数列表与模板参数“X”的模板参数列表不匹配

但是类模板 x 具有与参数 X 相同的一组模板参数。

地狱!这个错误报告来自 2012 年 4 月?!

状态:延期关闭

:(

微软,我很失望TT

编辑的编辑

在我的情况下(如下),我可以用自己的方式做我想做的事,但这很丑:

利用:

编译器是否允许在优化期间更改成员的偏移量?

编辑结束

新问题

以下在http://coliru.stacked-crooked.com/a/be088e06861f9349上编译得很好

但是visual studio 2013给了我这个错误:

错误 C3201:类模板“LocalInfo_Problem7”的模板参数列表与模板参数“LocalInfo”的模板参数列表不匹配

这是VS编译器错误吗?还是我的代码错了?

我在这里写了一个错误报告https://connect.microsoft.com/VisualStudio/feedback/details/933984/c-visual-studio-2013-compiler-bug-template-template-pointer-to-member-issue

如果这是一个错误,我怎样才能让它工作?

谢谢你的帮助。

老问题

我在使用有点复杂的模板“typedef”时遇到了一些麻烦。

尽可能简化问题,我想出了这个:

Visual Studio 2013 给我:错误 C3201:类模板“BB”的模板参数列表与模板参数“B”的模板参数列表不匹配

我看不出有什么问题。

Foo<AA, BB, ptr>“扩展到”template <class AA, template <AA*> class BB, AA* ptr> struct Foo : BB<ptr> {}

理论上,如果我们定义以下内容(我实际上并没有尝试编译以下内容):

然后

应该是别名

这对我来说看起来不错。

奇怪的是,以下两个变体编译得很好:

1 /改变template <A*>template <AA*>template <Z*>

这种解决方法让我的程序运行良好,但这违背了我的模板方法的目的。

或者 2/ 去掉 Bar 的第一个模板参数

那么编译器提到的不匹配是什么?

删除 Bar 的第一个模板参数如何解决问题?

谢谢你的帮助。

0 投票
1 回答
445 浏览

c++ - 涉及“使用”别名的成员函数重载解析中的英特尔 C++ 编译器错误?

ICC 14.0.2 给出错误:

但是,它可以与 GCC 4.8 和 Clang 3.4.2 一起编译。(在 64 位 Linux 上测试。)

任何熟悉 C++11 标准的人都可以确认这确实是一个错误吗?

此外,是否有一个简单的基于预处理器的解决方法?

0 投票
1 回答
263 浏览

delphi - 为什么记录构造函数在内联函数中行为不端?

在下面的代码中,记录构造函数做了一些奇怪的事情。
它在所有情况下都可以正常工作,除了下面标记的行:

为什么这条线会导致失败?

它是编译器错误吗?
还是我错过了什么?

我正在使用德尔福 XE6。

0 投票
1 回答
240 浏览

c++ - VC++ 2012 中出乎意料的模棱两可的重载解决方案

Visual C++ 2012。代码。我认为它应该编译;编译器恭敬地不同意。我已将我的复制范围缩小到:

所以我们有两个重载解决方案的候选者。对于第一个重载,第一个参数完全匹配,第二个参数需要整数转换(无符号到有符号)。对于第二个重载,第二个参数完全匹配,第一个参数需要 cv 调整(因为&b是指向非常量的指针)。

现在看来,这应该是完全明确的。对于重载 1,第一个参数是标准的重载决议部分定义的“精确匹配”,但第二个参数是“转换”。对于重载 2,两个参数都是“精确匹配”(资格转换与身份处于同一等级)。因此(我的推理显然不完美),应该选择重载 2,没有歧义。但是:

GCC 在默认方言和 C++11 中的代码似乎都很好(感谢 IDEOne!)。所以我很想把它归结为 MSVC 中的一个错误,但是(a)你知道他们对那些认为他们的错误是编译器错误的人说了什么,并且(b)这似乎是一个非常明显的错误,在一致性测试期间会发出危险信号的那种。

这是不合规的 MSVC,还是不合规的 GCC?(或两者兼而有之?)我关于过载分辨率的推理是否合理?

0 投票
0 回答
99 浏览

c++ - 数组引用和隐式构造函数:gcc 中的错误与否?

以下代码可以使用clang 3.5.0编译,但不能使用gcc 4.9.0编译(带有-Wall -Wextra -pedantic-errors标志和任何-std=c++03,-std=c++11-std=c++14标志):

MS VC 2013也 可以很好地编译此代码

哪个编译器是正确的,什么是符合标准的行为?

0 投票
0 回答
356 浏览

c++ - 指向 Visual Studio 2013 中成员函数模板参数的指针

我遇到了一个角落案例并寻找解决方法。我几乎可以肯定这是一个编译器错误,我想不出任何东西。我有一个类,它可选地需要一个指向成员函数的指针。为了允许它是可选的,我将默认值设为 nullptr。它一直有效,直到我做了一个不相关的改变。在 Visual Studio 中,它现在会触发“无效的模板参数,需要编译时常量”。它仍然适用于 GCC。这是工作案例:

这是不起作用的情况

出于某种原因,我无法将键检索与类型分开,因此即使在构造函数中提供 keyfn 很诱人,这也是不可能的。仅当 KeyFn_ 为 nullptr(或 0)时,第二个版本才会失败。如果我给它一个类成员,它编译得很好。

完整的源代码也可用:

http://sourceforge.net/p/gorgon-ge/code/ci/gscript/tree/

工作修订:

http://sourceforge.net/p/gorgon-ge/code/ci/77d287af75c2301fce55ab97ba49362f7ef6d9e0/tree/

我正在寻找解决方法,或者如果它根本不应该工作的解释。

0 投票
2 回答
286 浏览

c++ - C ++比较运算符不返回真或假

我有以下程序

我希望这个程序打印出 true 或 false,但它打印出 216。我已经用g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2. 是预期的行为还是一些错误?为什么相等运算符会返回与 bool 不同的类型?

- - - - - 编辑 - - - - -

我的意图不是强制转换为 void,而是让 v 将 216 存储在其内存位置。替代程序可能如下所示:

或者我可以采用未初始化的布尔指针,它指向某个随机值,例如 216。

0 投票
2 回答
80 浏览

c++ - 模板参数和它自己的模板参数都包含同名类型;如何在函数签名中引用第二个?

考虑这段代码:

它不能在 VS2012 下编译:

'U::t_type::{ctor} f(void)' 的显式模板参数无效

看起来,编译器得出的结论是,第二个t_typetypename U::t_type::t_type命名构造函数而不是同名嵌套类型。我能做些什么来帮助澄清情况吗?

0 投票
1 回答
422 浏览

c++ - MSVC++ 中可能的编译器错误

我相信我在 MSVC++ 中发现了一个编译器错误(直到 VS 2013)。我想在报告它之前检查它是否确实是一个错误。

以下代码:

产生编译错误:

但是,对我来说它看起来不错,并且在 ideone.com 上编译得很好。它是一个错误吗?它应该编译干净吗?

0 投票
1 回答
290 浏览

c++ - 使用 g++ 4.9.1 修复奇怪的“%a”格式行为?

编译器:来自 Nuwen 发行版的 64 位 MinGW G++ 4.9.1,在 Windows 8.1 下。

代码:


适用于 Visual C++(但 Visual C++ 似乎缺少相反的转换):


<iostream>包括在内时也适用于 g++ :


包含以下内容时会出现奇怪的结果<iostream>

我要求修复或解决方法。